使用Java 8将ms转换为字符串日期

Chr*_*ian 2 java datetime java-8 java-time

我有一个ms的时间戳,并使用SimpleDateFormater格式化,如下所示:

SimpleDateFormat sdfDate = new SimpleDateFormat("MM/d/yyyy h:mm a");

return sdfDate.format(new Date(timeStamp));
Run Code Online (Sandbox Code Playgroud)

现在我想改变它以使用新的Java 8功能.好像我真的找不到一种方法来使用新的Java 8类.有人有提示吗?

Mad*_*mer 6

如果您拥有的是毫秒值(假设来自Unix Epoch),您可以LocalDateTime使用以下内容:

LocalDateTime ldt = LocalDateTime.ofInstant(Instant.ofEpochMilli(timeInMillis), ZoneId.systemDefault());
System.out.println(ldt);
Run Code Online (Sandbox Code Playgroud)

哪个可以打印像:

2015-09-29T16:57:40.077
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用以下内容对其进行格式化:

System.out.println(ldt.format(DateTimeFormatter.ofPattern("MM/dd/yyyy h:mm a")));
Run Code Online (Sandbox Code Playgroud)

哪个可以打印类似的内容(基于前一个示例中的原始时间):

09/29/2015 4:57 PM
Run Code Online (Sandbox Code Playgroud)

  • 好吧,它仍然是两行代码(实际上我可以把它编成一行),但新的Time API更简单,使用更省电.而不是"日期"和"日历"以及围绕这些的所有有趣的东西.我也认为分区处理得更好(关于人们如何理解它)(哦和`java.util.Date`没有折旧,但考虑到新的Time/Date API的功能,它是多余的) (2认同)