我从JSON API获得一个类似于" 2018-04-10T04:00:00.000Z"的日期。我想转换它以获取Date或String对象并获得类似" 01-04-2018"它的" dd-MM-YYYY"。我该怎么办?
答案 0 :(得分:16)
DateTimeFormat
:我们的想法是定义两种格式:一种用于输入格式,另一种用于输出格式。使用输入格式化程序进行解析,然后使用输出格式化程序进行格式化。
除了尾随Z
之外,您的输入格式看起来非常标准。无论如何,让我们处理这个:"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
。尾随'Z'
是有趣的部分。通常这里有时区数据,例如-0700
。所以模式是...Z
,即没有撇号。
输出格式更简单:"dd-MM-yyyy"
。请注意小y
-s。
以下是示例代码:
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH);
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd-MM-yyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse("2018-04-10T04:00:00.000Z", inputFormatter);
String formattedDate = outputFormatter.format(date);
System.out.println(formattedDate); // prints 10-04-2018
SimpleDateFormat
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM-yyyy");
Date date = inputFormat.parse("2018-04-10T04:00:00.000Z");
String formattedDate = outputFormat.format(date);
System.out.println(formattedDate); // prints 10-04-2018
答案 1 :(得分:0)
使用日期模式yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
和Java 8,你可以做
String string = "2018-04-10T04:00:00.000Z";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH);
LocalDate date = LocalDate.parse(string, formatter);
System.out.println(date);
更新: 对于前26使用Joda时间
String string = "2018-04-10T04:00:00.000Z";
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
LocalDate date = org.joda.time.LocalDate.parse(string, formatter);
在app / build.gradle文件中,像这样添加 -
dependencies {
compile 'joda-time:joda-time:2.9.4'
}