Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java将格式(2018-04-12T03:00:00.000Z)从java.util包转换为日期_Java_Date_Java.util.date - Fatal编程技术网

如何使用java将格式(2018-04-12T03:00:00.000Z)从java.util包转换为日期

如何使用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

您好,我从前端收到一个具有这种格式的字符串(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'").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台计算机上产生了错误的输出。您在测试时得到了哪种输出?