如何在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
相关产品推荐
相关产品推荐

