在 epoch 中转换日期格式

2022-08-31 13:14:57

我有一个日期格式的字符串,例如

Jun 13 2003 23:11:52.454 UTC

包含毫秒...我想在纪元中转换。Java中是否有我可以用来进行此转换的实用程序?


答案 1

此代码演示如何使用 java.text.SimpleDateFormat 从字符串中解析 java.util.Date

String str = "Jun 13 2003 23:11:52.454 UTC";
SimpleDateFormat df = new SimpleDateFormat("MMM dd yyyy HH:mm:ss.SSS zzz");
Date date = df.parse(str);
long epoch = date.getTime();
System.out.println(epoch); // 1055545912454

Date.getTime()返回以毫秒为单位的纪元时间。


答案 2

您还可以使用 Java 8 API

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class StackoverflowTest{
    public static void main(String args[]){
        String strDate = "Jun 13 2003 23:11:52.454 UTC";
        DateTimeFormatter dtf  = DateTimeFormatter.ofPattern("MMM dd yyyy HH:mm:ss.SSS zzz");
        ZonedDateTime     zdt  = ZonedDateTime.parse(strDate,dtf);        
        System.out.println(zdt.toInstant().toEpochMilli());  // 1055545912454  
    }
}

DateTimeFormatter 类取代了旧的 SimpleDateFormat。然后,您可以创建一个 ZonedDateTime,从中提取所需的 epoch 时间。

主要优点是您现在是线程安全的。

感谢Basil Bourque的发言和建议。阅读他的答案以获取完整的详细信息。