这种时间格式的模式是什么?

时间:2018-05-14 07:37:50

标签: java android

我有一个API,它为我提供了以下格式的日期字符串,我希望这个时间格式的模式,并希望将其转换回Date类的实例。 Date.parse(String s)中的java.util在Android中已弃用。那么这样做的方法是什么?

TNX。

Mon, 14 May 2018 11:47:11 GMT

3 个答案:

答案 0 :(得分:2)

String format = EEE, dd MMM yyyy HH:mm:ss z
String input = "Mon, 14 May 2018 11:47:11 GMT";
SimpleDateFormat parser = new SimpleDateFormat(format);
Date date = parser.parse(input);

MMM返回短月份名称(JAN),如果需要,则使用MMMM。 H以24小时格式返回小时,使用K表示12小时格式。

答案 1 :(得分:1)

试试这个

                                                          //Mon,  14 May  2018 11:47:11 GMT
SimpleDateFormat mySimpleDateFormat = new SimpleDateFormat("EEEE, dd MMMM yyyy HH:mm:ss GMT");

答案 2 :(得分:1)

因为它像2018年一样。人们真的应该使用Java 8或ThreeTen Backport中引入的日期/时间API

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE, dd MMMM yyyy HH:mm:ss z", Locale.ENGLISH);
LocalDateTime ldt = LocalDateTime.parse("Mon, 14 May 2018 11:47:11 GMT", formatter);
System.out.println(ldt);
ZoneId zoneID = ZoneId.of("GMT");
ZonedDateTime zdt = ldt.atZone(zoneID);
System.out.println(zdt.format(formatter));

哪些输出......

2018-05-14T11:47:11
Mon, 14 May 2018 11:47:11 GMT

您还应该更好地利用提供可用格式化程序属性示例的JavaDocs

  

但DateTimeFormatter仅适用于Android 26+,我的应用程序运行在16 +

  

但它打印出来:GMT + 00:00

以下......

String format = "EEE, dd MMM yyyy HH:mm:ss z";
String input = "Mon, 14 May 2018 11:47:11 GMT";
SimpleDateFormat parser = new SimpleDateFormat(format, Locale.UK);
Date date = parser.parse(input);
parser.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(parser.format(date));

...打印

Mon, 14 May 2018 11:47:11 GMT

但我在桌面上使用Java 8,因此Android可能会有所不同