SimpleDateFormat中是否有毫秒级的1970年时间戳转换格式?

5

SimpleDateFormat中是否有毫秒级别的1970年以来的时间戳?我知道getTime()方法,但我想定义一个包含毫秒级别的日期和时间格式。


2
你能读取你链接的页面吗?如果有,它会在那里列出。 - icza
https://dev59.com/Gm855IYBdhLWcg3wy3ob?rq=1 - Black Sheep
1
根据文档显示,似乎没有一个。 - Clive
我可以阅读,但我没有找到它。所以针对当前的问题,我想确保真的没有这样的字母。可能有其原因。也许有人可以告诉我。 - principal-ideal-domain
1个回答

8

SimpleDateFormat没有一个符号(字母)用于插入自1970年1月1日00:00:00 UTC以来的毫秒数。

原因:坦率地说,仅插入自纪元开始的毫秒数就是插入Date.getTime()返回的long值,即表示时间点(Date)的值,当您的目标是创建人类可读的格式化日期/时间字符串时,这并不是非常有用。因此,我认为为此设置符号是不合理的。您可以轻松地附加此数字或将其值作为任何其他简单数字一样包含。

但是,还有一种选择:String.format()

String.format()使用格式字符串,该字符串还支持日期/时间转换,其与SimpleDateFormat的模式非常相似。

例如,有一个符号'H'用于一天中的小时(24小时制),'m'用于月份(两位数字)等,在大多数情况下,String.format()可以代替SimpleDateFormat

您感兴趣的内容也有一个符号:'Q':自1970年1月1日00:00:00 UTC以来的毫秒数。

更好的是,String.format()足够灵活,可以接受long值和Date作为日期/时间转换的输入参数。

用法:

System.out.println(String.format("%tQ", System.currentTimeMillis()));
System.out.println(String.format("%tQ", new Date()));

// Or simply:
System.out.printf("%tQ\n", System.currentTimeMillis());
System.out.printf("%tQ\n", new Date());

// Full date+time+ millis since epoc:
Date d = new Date();
System.out.printf("%tF %tT (%tQ)", d, d, d);
// Or passing the date only once:
System.out.printf("%1$tF %1$tT (%1$tQ)", d);

// Output: "2014-09-05 11:15:58 (1409908558117)"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接