You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中获取指定格式(2018-03-22 19:02:12.337909)的当前TimeStamp?

在Kotlin中获取指定格式的时间戳(含微秒)

嘿,这个问题我刚好熟悉!在Kotlin里要拿到你要的这种2018-03-22 19:02:12.337909格式的时间戳,有两种常用的方法,我分别给你讲讲:

推荐方法:使用Java 8+的DateTime API(线程安全)

Java 8引入的java.time包是处理日期时间的首选方案,它不仅线程安全,还能轻松支持到微秒级精度。直接上代码:

import java.time.LocalDateTime
import java.time.format.DateTimeFormatter

fun getFormattedTimestamp(): String {
    // 定义匹配你需求的格式:年-月-日 时:分:秒.微秒(六位)
    val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS")
    // 获取当前本地时间并格式化
    return LocalDateTime.now().format(formatter)
}

这里的格式字符串yyyy-MM-dd HH:mm:ss.SSSSSS对应:

  • yyyy:四位年份
  • MM:两位月份(比如03)
  • dd:两位日期(比如22)
  • HH:24小时制的两位小时(比如19)
  • mm:两位分钟
  • ss:两位秒数
  • SSSSSS:六位微秒(因为LocalDateTime支持纳秒精度,取前六位就是微秒)

如果需要UTC时区的时间,只需要改成:

import java.time.ZoneOffset

LocalDateTime.now(ZoneOffset.UTC).format(formatter)

兼容旧版本:使用SimpleDateFormat(注意线程安全问题)

如果你需要兼容Java 8之前的环境,可以用SimpleDateFormat,但要注意它不是线程安全的,在多线程场景下要么每次创建实例,要么用ThreadLocal包裹:

import java.text.SimpleDateFormat
import java.util.Date

fun getFormattedTimestampLegacy(): String {
    val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS")
    return sdf.format(Date())
}

不过要注意:Date类的精度只有毫秒,所以这里的六位“微秒”其实是毫秒后面补零(比如毫秒是337,就会变成337000),如果需要真正的微秒精度,还是推荐用第一种方法。


内容的提问来源于stack exchange,提问作者Amber Normand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:14:18