首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >格式化时间戳的简单快捷的方法

格式化时间戳的简单快捷的方法
EN

Stack Overflow用户
提问于 2014-12-20 10:01:43
回答 4查看 2.5K关注 0票数 1

我们有一些时间戳,用millis来表示,很久以前就有了。在用于日志记录、异常或toString()方法的字符串中,需要对这些时间戳进行格式化。一个简单而干净的格式就足够了。

那么,在Java中格式化时间戳的最简单和最快的方法是什么?

要求:

  • 输入时间戳,以millis表示,自纪元以来
  • 输出应该是字符串。
  • 快地
  • 低CG开销
  • 一个简单而干净的输出就足够了,因为它仅用于内部目的(调试和日志记录),例如最小值: 20141220 174522.23。
  • 如果可能,在JDK内
  • 时区是系统时区。

特别是,是否有人做了一个JDK方法的基准测试,可以用于此?

实际上,我不想使用SimpleDateFormat,因为我认为它的灵活性带来了太多的开销。

EN

回答 4

Stack Overflow用户

发布于 2016-10-29 11:45:12

易于使用,合理快速:

代码语言:javascript
运行
复制
// All Java versions:
new java.sql.Timestamp(millis).toString(); // 2016-10-29 12:28:41.979

// Recommended when using Java 8+ (about +50% faster than Timestamp), standards compliant format
// checked with jmh 1.15
java.time.Instant.ofEpochMilli(millis).toString(); // 2016-10-29T10:28:41.979Z
票数 2
EN

Stack Overflow用户

发布于 2014-12-20 13:53:40

Apache的FastDateFormat类绝对是SimpleDateFormat的一个很好的替代方案。它是快速的,也是线程安全的(特别是在多线程服务器环境中有用)。所有模式都与SimpleDateFormat兼容(时区和某些年份模式除外)。

构造函数的摘要如下:

FastDateFormat(String pattern, TimeZone timeZone, Locale locale)

您可以在FastDateFormat上找到更多信息。

票数 1
EN

Stack Overflow用户

发布于 2014-12-20 15:50:07

最快的实现很可能是:

代码语言:javascript
运行
复制
Long.toString(millis);

如果性能是最重要的,那么您应该使用它。

实际上,我不想使用SimpleDateFormat,因为我认为它的灵活性带来了太多的开销。

根据一个快速的jmh基准,在我的笔记本电脑上,Long.toString每秒得到1200万次运算,SimpleDateFormat是200万次。

你的预算是多少?一旦你知道了,你就能决定哪一个是最合适的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27579104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档