在 epoch 中转换日期格式
我有一个日期格式的字符串,例如
Jun 13 2003 23:11:52.454 UTC
包含毫秒...我想在纪元中转换。Java中是否有我可以用来进行此转换的实用程序?
我有一个日期格式的字符串,例如
Jun 13 2003 23:11:52.454 UTC
包含毫秒...我想在纪元中转换。Java中是否有我可以用来进行此转换的实用程序?
此代码演示如何使用 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()
返回以毫秒为单位的纪元时间。
您还可以使用 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的发言和建议。阅读他的答案以获取完整的详细信息。