我从JSON获取两个日期字段,如May 22 12:05:41 UTC 2018
和2018-05-22 12:05:41.512
这样的文字,但我必须更改为MM-dd-yyyy HH:mm:ss
格式。
答案 0 :(得分:4)
只是要清楚 - 日期/时间对象与格式无关。它们只是自固定时间点(通常是Unix Epoch)以来经过的时间量的容器,因此您无法更改其格式本身。
但是,您可以生成String
指定模式。
在Java中处理日期/时间时,您应该使用Java 8(或ThreeTen后端口)中引入的日期/时间API
例如......
String date1 = "May 22 12:05:41 UTC 2018";
DateTimeFormatter format1 = DateTimeFormatter.ofPattern("MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
LocalDateTime ldt1 = LocalDateTime.parse(date1, format1);
String date2 = "2018-05-22 12:05:41.512";
DateTimeFormatter format2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS", Locale.ENGLISH);
LocalDateTime ldt2 = LocalDateTime.parse(date2, format2);
DateTimeFormatter format3 = DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss", Locale.ENGLISH);
System.out.println(ldt1.format(format3));
System.out.println(ldt2.format(format3));
哪些输出......
05-22-2018 12:05:41
05-22-2018 12:05:41
由于您的某个输入具有与之关联的时区,因此将其考虑在内是合适的
ZonedDateTime zdt = ZonedDateTime.parse(date1, format1);
LocalDateTime ldt1 = zdt.withZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime();
输出(对于我当前的位置)
05-22-2018 22:05:41
答案 1 :(得分:0)
您可以使用此代码
DateFormat format = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
DateFormat inputFormat1 = new SimpleDateFormat("MMM dd HH:mm:ss z yyyy");
DateFormat inputFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
String date1 = "May 22 12:05:41 UTC 2018";
String date2 = "2018-05-22 12:05:41.512";
System.out.println(format.format(inputFormat1.parse(date1)));
System.out.println(format.format(inputFormat2.parse(date2)));