此文档介绍Kotlin Dates的两种书写方式。
这里先把相关的代码附上,我们可以在kotlin playground上直接运行:
import java.text.SimpleDateFormat
import java.util.*
import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.time.Period
* You can edit, run, and share this code.
* play.kotlinlang.org
fun main() {
println("First way of showing date time.")
val timeNow = Calendar.getInstance().time.time
println("current time in long: ${timeNow}")
val dateTimeNow = dateAsString(timeNow)
println("current time in date format: ${dateTimeNow}")
val dateTime1DayAgo = dateAsString(timeNow-1000*60*60*24)
println("Time 1 day ago in date format: ${dateTime1DayAgo}")
println("Second way of showing date time.")
val formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy")
val date = LocalDate.parse("31-12-2018", formatter)
println("specific time in date format: ${date}.")
val dateInString = date.toString()
println("specific time in string: ${date}.")
val period = Period.of(1, 2, 3)
val modifiedDate = date.plus(period)
println("Time after adding 1 year, 2 months, 3 days, in date format: ${modifiedDate}.")
val modifiedDateMinus = date.plus(period)
println("Time after minusing 1 year, 2 months, 3 days, in date format: ${modifiedDateMinus}.")
val date1 = LocalDate.parse("2018-06-25")
val date2 = LocalDate.parse("2018-12-25")
val period2 = Period.between(date1, date2)
println("Time between date1 and date2 is: ${period2}.")
fun dateAsString(
dateInMillis: Long,
format: String = "dd.MM.yyyy HH:mm",
locale: Locale = Locale.getDefault()
): String {
val date = Date(dateInMillis)
val formatter = SimpleDateFormat(format, locale)
return formatter.format(date)
First way of showing date time.
current time in long: 1663254528651
current time in date format: 15.09.2022 15:08
Time 1 day ago in date format: 14.09.2022 15:08
Second way of showing date time.
specific time in date format: 2018-12-31.
specific time in string: 2018-12-31.
Time after adding 1 year, 2 months, 3 days, in date format: 2020-03-03.
Time after minusing 1 year, 2 months, 3 days, in date format: 2020-03-03.
Time between date1 and date2 is: P6M.
第一种 Dates
的使用方式是通过 Calendar
。需要注意的是,Calendar.getInstance().time.time
返回的是一个long
的值。对应的数值很大,因为精确到millisecond。所以,当我们需要计算几天前几天后的某一个时间点时,只需要加减对应millisecond的值即可。dateAsString
函数的作用是将Long
格式的时间转化为"dd.MM.yyyy HH:mm"
格式,方便在界面显示。我个人比较喜欢这一种时间的使用方式,方便存储,也方便显示。
第二种 Dates
的使用方式是通过 LocalDate
。详细的使用方式参见上面的代码。这种方式也是比较简单直白的。
使用Java开发时,往往需要满足不同的需求而不断的写些工具类(如字符串工具类StringUtil、日期工具类DateUtil等)来补充,工具类越来越多,管理也就越来越麻烦
因此,Kotlin推出了拓展函数的概念,允许开发者给系统类补写新的方法
在开发中,最常见的就是时间格式化工具了,在以往的Java开发中,往往需要些一个工具类来调用
public class DateUtil {
pub...
有关如何在项目中设置依赖项的说明,请参见。
kotlinx-datetime的设计中有一些指导原则。 首先,它是务实的,专注于开发人员在处理日期和时间时每天都会遇到的最常见问题(双关语)。 它不是万能的,并且缺少一些特殊用途的应用程序可能需要的特定于域的实用程序。 我们选择便利性而不是一般性,因此该库提供的API表面要尽可能地减少以满足用例。
该库在即时的物理时间与本地时区相关的民事时间之间建立了明确的界限,该时间由人们在谈论时间时所使用的诸如年,月等组成。 我们有意避免库中的实体混合在一起并可能被滥用。 但是,有些便捷操作需要花一些物理时间,并执行基于日历的调整(例如增加一个月); 所有此类操作都明确采用时区信息作为参数,以明确说明其结果取决于随时可能更改的民用时区规则。
该库基于ISO 8601国际标
//获取当前天开始的时间戳
LocalDateTime.of(LocalDate.now(),LocalTime.MIN).atZone(ZoneId.systemDefault()).toEpochSecond() //1625155200
LocalDateTime.of(Loc
选择日期范围,刷新选择的时间区间所检索的数据
在某大牛原控件的基础上,做了一个拓展使用,可解决一些原控件的bug问题。
文内只写了日期的选择使用,时间的选择类似,详情可参照博客内容:
https://blog.csdn.net/w630886916/article/details/81701149
package org.joda.time.DateTime(long类型)
fun Long?.toDateTime() = if (null != this) DateTime(this) else null
2.再一个方法
private fun dateTime(
time:Long? = null
) = if(time != nul...
Kotlin build.gradle是指使用Kotlin语言编写的Gradle构建文件。根据提供的引用信息,有几个注意事项和修改方式可以帮助成功使用Kotlin编写build.gradle.kts文件。
首先,使用gradlekotlinize工具可以将原始的Groovy build.gradle文件转换为Kotlin build.gradle.kts文件。这个工具可以在线使用,方便将现有的Groovy构建文件转换为Kotlin脚本。
其次,Kotlin版本的Gradle文件后缀会发生变化,从.gradle变为.gradle.kts。这表示Kotlin构建文件是使用Kotlin脚本编写的,而不是使用Groovy。
最后,在修改根目录的build.gradle.kts文件时,可以将引用的静态变量的定义放到src/main/kotlin/目录中,这样可以更好地组织代码。同时,还可以将根目录的build.gradle.kts文件改回build.gradle,以确保项目的结构和文件命名符合预期。
通过上述方式,你可以使用Kotlin编写build.gradle.kts文件,并且成功地进行sync操作。