如何使用java将格式(2018-04-12T03:00:00.000Z)从java.util包转换为日期
您好,我从前端收到一个具有这种格式的字符串(2018-04-12T03:00:00.000Z),因此,我必须使用Java将其从Util包转换为日期。(Java.Util.Date)如何使用java将格式(2018-04-12T03:00:00.000Z)从java.util包转换为日期,java,date,java.util.date,Java,Date,Java.util.date,您好,我从前端收到一个具有这种格式的字符串(2018-04-12T03:00:00.000Z),因此,我必须使用Java将其从Util包转换为日期。(Java.Util.Date) 有什么好方法可以做到这一点吗?如果您使用的是Java 8+,最简单的方法是使用Java.time包解析日期: String sDate1="2018-04-12T03:00:00.000Z"; Date date1=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z
有什么好方法可以做到这一点吗?如果您使用的是Java 8+,最简单的方法是使用Java.time包解析日期:
String sDate1="2018-04-12T03:00:00.000Z";
Date date1=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").parse(sDate1);
System.out.println(sDate1+"\t"+date1);
Date date = Date.from(Instant.parse("2018-04-12T03:00:00.000Z"));
你试过什么,有什么问题?我假设您已查找SimpleDataFormat?通常避免使用
Date
类。它早已过时了。在您的情况下,我建议使用来自的Instant
。Z
是UTC的偏移量,在格式中硬编码为文字会导致错误的结果。此外,请不要毫无保留地教年轻人使用过时且臭名昭著的simpledteformat
类作为第一选项。今天我们的生活好多了。是的,你可以在Android上使用它。对于较旧的Android,请参阅。我在IDE中测试了此代码。它工作正常@OleV.V。在欧洲/哥本哈根时区,我的计算机上正确的输出应该是2018年4月12日星期四05:00:00 CEST。您的代码打印日期为2018年4月12日星期四03:00:00 CEST 2018年4月12日星期四2018-04-12T03:00:00.000Z
。差两个小时就错了。如果您的时区恰好与UTC一致,您的输出将恰好是正确的。您的代码段在20台计算机中的19台计算机上产生了错误的输出。您在测试时得到了哪种输出?