以下是 Kotlin 中常用时间类(基于 java.time 包)的核心方法及使用示例,参考数组方法的表格形式,按类分类展示:

一、LocalDate(日期:年/月/日)

方法签名返回值说明示例
now(): LocalDateLocalDate获取当前日期LocalDate.now() → 2023-10-05
of(year: Int, month: Int, day: Int): LocalDateLocalDate创建指定日期LocalDate.of(2023, 10, 5) → 2023-10-05
of(year: Int, month: Month, day: Int): LocalDateLocalDate用Month枚举创建LocalDate.of(2023, Month.OCTOBER, 5)
getYear(): IntInt获取年份LocalDate.now().getYear() → 2023
getMonth(): MonthMonth获取月份(枚举)LocalDate.now().getMonth() → OCTOBER
getMonthValue(): IntInt获取月份(数字1-12)LocalDate.now().getMonthValue() → 10
getDayOfMonth(): IntInt获取当月第几天LocalDate.now().getDayOfMonth() → 5
getDayOfWeek(): DayOfWeekDayOfWeek获取星期几(枚举)LocalDate.now().getDayOfWeek() → THURSDAY
plusYears(years: Long): LocalDateLocalDate增加年份LocalDate.of(2023,10,5).plusYears(1) → 2024-10-05
plusMonths(months: Long): LocalDateLocalDate增加月份LocalDate.of(2023,10,5).plusMonths(1) → 2023-11-05
plusDays(days: Long): LocalDateLocalDate增加天数LocalDate.of(2023,10,5).plusDays(1) → 2023-10-06
minusYears(years: Long): LocalDateLocalDate减少年份LocalDate.of(2023,10,5).minusYears(1) → 2022-10-05
minusMonths(months: Long): LocalDateLocalDate减少月份LocalDate.of(2023,10,5).minusMonths(1) → 2023-09-05
minusDays(days: Long): LocalDateLocalDate减少天数LocalDate.of(2023,10,5).minusDays(1) → 2023-10-04
isAfter(other: LocalDate): BooleanBoolean是否在指定日期之后LocalDate.of(2023,10,6).isAfter(LocalDate.of(2023,10,5)) → true
isBefore(other: LocalDate): BooleanBoolean是否在指定日期之前LocalDate.of(2023,10,4).isBefore(LocalDate.of(2023,10,5)) → true
isEqual(other: LocalDate): BooleanBoolean是否与指定日期相等LocalDate.of(2023,10,5).isEqual(LocalDate.of(2023,10,5)) → true
atTime(time: LocalTime): LocalDateTimeLocalDateTime结合时间生成LocalDateTimeLocalDate.now().atTime(12,30) → 2023-10-05T12:30
parse(text: CharSequence): LocalDateLocalDate从字符串解析日期(默认格式yyyy-MM-dd)LocalDate.parse("2023-10-05") → 2023-10-05

二、LocalTime(时间:时/分/秒)

方法签名返回值说明示例
now(): LocalTimeLocalTime获取当前时间LocalTime.now() → 15:30:45.123
of(hour: Int, minute: Int): LocalTimeLocalTime创建指定时分LocalTime.of(12, 30) → 12:30
of(hour: Int, minute: Int, second: Int): LocalTimeLocalTime创建指定时分秒LocalTime.of(12,30,45) → 12:30:45
getHour(): IntInt获取小时(0-23)LocalTime.now().getHour() → 15
getMinute(): IntInt获取分钟(0-59)LocalTime.now().getMinute() → 30
getSecond(): IntInt获取秒(0-59)LocalTime.now().getSecond() → 45
getNano(): IntInt获取纳秒(0-999,999,999)LocalTime.now().getNano() → 123456789
plusHours(hours: Long): LocalTimeLocalTime增加小时LocalTime.of(12,30).plusHours(1) → 13:30
plusMinutes(minutes: Long): LocalTimeLocalTime增加分钟LocalTime.of(12,30).plusMinutes(30) → 13:00
plusSeconds(seconds: Long): LocalTimeLocalTime增加秒LocalTime.of(12,30).plusSeconds(60) → 12:31
minusHours(hours: Long): LocalTimeLocalTime减少小时LocalTime.of(12,30).minusHours(1) → 11:30
minusMinutes(minutes: Long): LocalTimeLocalTime减少分钟LocalTime.of(12,30).minusMinutes(30) → 12:00
isAfter(other: LocalTime): BooleanBoolean是否在指定时间之后LocalTime.of(13,0).isAfter(LocalTime.of(12,30)) → true
isBefore(other: LocalTime): BooleanBoolean是否在指定时间之前LocalTime.of(12,0).isBefore(LocalTime.of(12,30)) → true
atDate(date: LocalDate): LocalDateTimeLocalDateTime结合日期生成LocalDateTimeLocalTime.now().atDate(LocalDate.now()) → 2023-10-05T15:30:45
parse(text: CharSequence): LocalTimeLocalTime从字符串解析时间(默认格式HH:mm:ss)LocalTime.parse("12:30:45") → 12:30:45

三、LocalDateTime(日期+时间)

方法签名返回值说明示例
now(): LocalDateTimeLocalDateTime获取当前日期时间LocalDateTime.now() → 2023-10-05T15:30:45
of(date: LocalDate, time: LocalTime): LocalDateTimeLocalDateTime结合日期和时间LocalDateTime.of(LocalDate.now(), LocalTime.now())
of(year: Int, month: Int, day: Int, hour: Int, minute: Int): LocalDateTimeLocalDateTime直接创建LocalDateTime.of(2023,10,5,12,30) → 2023-10-05T12:30
toLocalDate(): LocalDateLocalDate提取日期部分LocalDateTime.now().toLocalDate() → 2023-10-05
toLocalTime(): LocalTimeLocalTime提取时间部分LocalDateTime.now().toLocalTime() → 15:30:45
plusYears(years: Long): LocalDateTimeLocalDateTime增加年份LocalDateTime.now().plusYears(1)
minusMonths(months: Long): LocalDateTimeLocalDateTime减少月份LocalDateTime.now().minusMonths(1)
isAfter(other: LocalDateTime): BooleanBoolean是否在指定日期时间之后LocalDateTime.now().isAfter(LocalDateTime.now().minusHours(1)) → true
atZone(zone: ZoneId): ZonedDateTimeZonedDateTime转换为带时区的时间LocalDateTime.now().atZone(ZoneId.of("Asia/Shanghai"))

四、ZonedDateTime(带时区的日期时间)

方法签名返回值说明示例
now(zone: ZoneId): ZonedDateTimeZonedDateTime获取指定时区的当前时间ZonedDateTime.now(ZoneId.of("UTC"))
now(): ZonedDateTimeZonedDateTime获取系统默认时区的当前时间ZonedDateTime.now() → 2023-10-05T15:30:45+08:00[Asia/Shanghai]
getZone(): ZoneIdZoneId获取时区ZonedDateTime.now().getZone() → Asia/Shanghai
withZoneSameInstant(zone: ZoneId): ZonedDateTimeZonedDateTime转换到另一个时区(时间点不变)ZonedDateTime.now().withZoneSameInstant(ZoneId.of("UTC"))
toLocalDateTime(): LocalDateTimeLocalDateTime转换为本地日期时间(无时区)ZonedDateTime.now().toLocalDateTime()
toInstant(): InstantInstant转换为时间戳ZonedDateTime.now().toInstant()

五、Instant(时间戳,UTC)

方法签名返回值说明示例
now(): InstantInstant获取当前UTC时间戳Instant.now() → 2023-10-05T07:30:45.123Z
toEpochMilli(): LongLong转换为毫秒级时间戳(1970年起)Instant.now().toEpochMilli() → 1696507845123
plusMillis(millis: Long): InstantInstant增加毫秒Instant.now().plusMillis(1000)
minusSeconds(seconds: Long): InstantInstant减少秒Instant.now().minusSeconds(60)
atZone(zone: ZoneId): ZonedDateTimeZonedDateTime转换为指定时区的时间Instant.now().atZone(ZoneId.of("Asia/Shanghai"))

六、Duration(时间间隔:时/分/秒)

方法签名返回值说明示例
between(start: T, end: T): DurationDuration计算两个时间的间隔Duration.between(LocalTime.of(12,0), LocalTime.of(13,30)) → PT1H30M
ofHours(hours: Long): DurationDuration创建指定小时的间隔Duration.ofHours(2) → PT2H
plusMinutes(minutes: Long): DurationDuration增加分钟Duration.ofHours(1).plusMinutes(30) → PT1H30M
toMinutes(): LongLong转换为总分钟数Duration.ofHours(1).toMinutes() → 60
isNegative(): BooleanBoolean是否为负间隔Duration.ofHours(-1).isNegative() → true

七、Period(日期间隔:年/月/日)

方法签名返回值说明示例
between(start: LocalDate, end: LocalDate): PeriodPeriod计算两个日期的间隔Period.between(LocalDate.of(2023,1,1), LocalDate.of(2023,10,5)) → P9M4D
ofYears(years: Int): PeriodPeriod创建指定年数的间隔Period.ofYears(1) → P1Y
plusMonths(months: Int): PeriodPeriod增加月数Period.ofYears(1).plusMonths(3) → P1Y3M
getDays(): IntInt获取天数部分Period.between(LocalDate.of(2023,10,1), LocalDate.of(2023,10,5)).getDays() → 4

综合示例

import java.time.*
import java.time.format.DateTimeFormatterfun main() {// 1. 获取当前日期并加1天val tomorrow = LocalDate.now().plusDays(1)println("明天: $tomorrow")// 2. 解析字符串为日期并比较val deadline = LocalDate.parse("2023-12-31")println("是否过期: ${LocalDate.now().isAfter(deadline)}")// 3. 计算两个时间的间隔val start = LocalTime.of(9, 0)val end = LocalTime.of(18, 30)val workDuration = Duration.between(start, end)println("工作时长(小时): ${workDuration.toHours()}")// 4. 带时区的时间转换val shanghaiTime = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"))val newYorkTime = shanghaiTime.withZoneSameInstant(ZoneId.of("America/New_York"))println("上海时间: $shanghaiTime")println("纽约时间: $newYorkTime")// 5. 格式化输出val formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss")val formatted = LocalDateTime.now().format(formatter)println("格式化时间: $formatted")
}

以上涵盖了 Kotlin 中处理时间的核心类及常用方法,实际开发中可根据需求选择合适的类(如仅处理日期用 LocalDate,带时区用 ZonedDateTime 等)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/94513.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/94513.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/94513.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Big Data】Hive技术解析:大数据仓库的SQL桥梁

Hive作为Apache顶级项目,是Hadoop生态系统中最具影响力的SQL查询引擎,它解决了大数据处理与传统SQL技能之间的鸿沟。Hive的核心价值在于将类SQL查询语言HiveQL无缝转换为分布式计算框架MapReduce的任务,使数据分析师能够利用熟悉的SQL语法操作…

Ubuntu2204server系统安装postgresql14并配置密码远程连接

前言: 最近因项目需要安装postgresql14,系统是ubuntu2204server系统,安装好后发现无法实现远程连接,解决了之后在此记录一下解决方法。 疑问: 什么情况下需要配置postgresql远程连接? ①如果是postgresql和…

【嵌入式】【搜集】状态机、状态迁移图及状态模式材料

文章目录状态机状态机状态机定义与核心特点状态机总结状态迁移图状态迁移图状态迁移图核心概念与要素状态迁移图常见错误与规避状态迁移图总结状态模式状态模式状态模式核心概念与组成状态模式核心价值与适用场景状态模式优缺点分析进阶优化技巧行为模式总结状态机 状态机 状…

Java学习历程14——制作一款五子棋游戏(4)

上次我们基本实现了五子棋游戏的功能,这次我们进行一些优化和添加一些便于用户使用的功能。新增功能及优化一、复盘功能复盘功能就是指在下完一局棋后,我们可以通过复盘按钮使本局棋的所有棋子重头开始自动下一遍。分析得知,我们首先要保存以…

记录一次el-table+sortablejs的拖拽bug

bug回顾出现bug的情况时 当编辑表格过于紧凑的时候 有些非必要编辑或需要一眼看到的数据 移动到了el-table-column typeexpand时 同事:怎么拖拽功能用不了了 ok开始检查代码 当原来是个简单的编辑表格 不涉及展开和简单拖拽时 不会出现问题 解决了 出现了展开行以后…

利用go sort.Sort()排序自定义切片

1 sort.Sort()简介2 核心功能3 调用前提4 代码示例 1 sort.Sort()简介 Go语言中的sort.Sort函数是标准库提供的通用排序接口 2 核心功能 核心功能支持多种类型进行快速排序 基础类型支持‌:内置Ints、Float64s、Strings等函数直接排序常见切片 自定义排序‌&a…

Elasticsearch脑裂紧急处理与预防

在 Elasticsearch 中出现 网络分区(Network Partition) 或 脑裂(Split-Brain) 导致两个子集群各自选出 Master 的情况,是非常严重的问题。比如这个场景(20个节点分裂成两个10节点的子集群,各自选…

华为网路设备学习-29(BGP协议 四)路由策略-实验

示例 延伸-具体实验1.代码部分:基础配置R1 [Huawei]int GigabitEthernet 0/0/0 [Huawei-GigabitEthernet0/0/0]ip address 10.1.13.1 24[Huawei]int LoopBack 1 [Huawei-LoopBack1]ip address 172.16.1.1 24 [Huawei-LoopBack1]q [Huawei]int LoopBack 2 [Huawei-Lo…

500系列状态码与可能的场景

501 Not Implemented(未实现)HTTP 方法不支持客户端发送了 PUT、DELETE、PATCH 请求但服务器只实现了 GET 和 POST协议功能不支持客户端使用了 HTTP/2 的某些高级特性服务器只支持 HTTP/1.1,无法处理,返回 501API 接口未完成开发中…

大数据、hadoop、爬虫、spark项目开发设计之基于数据挖掘的交通流量分析研究

大数据、hadoop、爬虫、spark项目开发设计之基于数据挖掘的交通流量分析研究

Pytest项目_day20(log日志)

Log日志优点:记录程序运行信息,方便定位问题python日志模块logging,日志等级如下: DEBUGINFO(正常)WARNINGERROR(报错)示例代码如下:import logging import os.path impo…

elasticsearch中的分词器配置及使用

一、什么是分词器? 在 Elasticsearch(ES)中,分词器(Analyzer) 是处理文本的核心组件,负责将原始文本转换为可搜索的索引词(Term)。它是文本分析过程的核心,直…

《Linux 网络编程二:UDP 与 TCP 的差异、应用及问题应对》

一、UDP 与 TCP 对比表对比项UDPTCP连接方式无需建立连接有连接(三次握手建立,四次挥手断开)传输可靠性尽最大努力交付,可能丢包安全可靠的数据传输机制面向对象面向数据包面向数据流传输模式一对一、一对多传输本质一对一&#x…

uniapp 页面跳转及字符串转义

1. uniapp 页面跳转及字符串转义 1.1. uniapp页面跳转方法 在uniapp中,页面跳转可以通过多种方式进行,包括但不限于路由跳转和页面间事件通信。   一. 路由跳转   在uniapp中,路由跳转是指通过改变页面url的方式来跳转到不同的页面。uni-app提供了一套路由跳转的API,包…

Vue中 this.$emit() 方法详解, 帮助子组件向父组件传递事件

this.$emit()是 Vue.js 中一个很有用的方法,可以帮助子组件向父组件传递事件1、原理说明:在Vue中,this.$emit()方法用于触发自定义事件。它是Vue实例的一个方法,可以在组件内部使用。使用 this.$emit() 方法,可以向父组件发送自定…

BUCK电路的环路补偿

芯片的COMP脚是用来设计环路补偿用的,它给芯片内部的误差放大器的输出和PWM控制器输入做补偿,如果环路补偿设计得不好,会更容易引起环路的不稳定或振荡,也可能导致输出电压异常。环路补偿涉及三个指标:剪切频率&#x…

Hyperledger Fabric官方中文教程-改进笔记(十六)-策略(policy)

本Fabric中文文档专栏的阅读前言:前言 文章目录什么是策略为什么需要策略策略如何实现访问控制列表 (ACLs)智能合约背书政策修改策略如何在 Fabric 中编写策略Signature policiesImplicitMeta policies例子: 通道配置策略Organizations 部分Application部分Fabric 链…

Flutter性能优化完全指南:构建流畅应用的实用策略

Flutter性能优化完全指南:构建流畅应用的实用策略 探索从UI构建到内存管理的全方位优化技巧,打造如丝般顺滑的Flutter体验 引言 在跨平台开发领域,Flutter以其出色的性能表现脱颖而出。然而,正如任何强大的框架一样,不…

jvm对象内存占用

欢迎访问我的主页: https://heeheeaii.github.io/ 在Java虚拟机(JVM)中,一个对象在内存中的存储布局可以分为三个部分:对象头(Object Header)、实例数据(Instance Data)和对齐填充…

嵌入式系统中mcu寄存器分类划分

目录一、 按行为特性分类二、 按功能角色分类(更宏观的角度)总结与注意事项在32位单片机(尤其是基于ARM Cortex-M系列内核的)中,寄存器的种类可以按照其“行为模式”和“功能”来进行分类。以下是32位单片机&#xff0…