我有一个API,它为我提供了以下格式的日期字符串,我希望这个时间格式的模式,并希望将其转换回Date
类的实例。 Date.parse(String s)
中的java.util
在Android中已弃用。那么这样做的方法是什么?
TNX。
Mon, 14 May 2018 11:47:11 GMT
答案 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可能会有所不同