public static void main(String[] args) throws ParseException {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'");
Date date = format.parse("2015-07-16T03:58:24.932031Z");
System.out.println("date: " + date);
System.out.println("timestamp: " + date.getTime());
}
输出:
date: Thu Jul 16 04:13:56 CST 2015
timestamp: 1436991236031
我的日期格式错了吗?
提前致谢!
答案 0 :(得分:3)
你不想引用Z,它是一个时区指标。相反,请使用X
format specifier作为ISO-8601时区。
另外,您可能希望稍微预处理字符串,因为最后的部分.932031
不是毫秒(请记住,一秒钟内只有1000毫秒)。看看那个值,它可能是微秒(百万分之一秒)。 SimpleDateFormat
没有微秒的格式说明符。您可以简单地使用正则表达式或其他字符串操作来删除它的最后三位数,将其转换为毫秒。
这(假设您已完成修剪)有效:Live Copy
DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
// Note --------------------------------------------------------^^^^
Date date = format.parse("2015-07-16T03:58:24.932Z");
// Note trimming --------------------------------^
System.out.println("date: " + date);
System.out.println("timestamp: " + date.getTime());