日期作为 LocalDateTime 的长值
Date as longvalue to LocalDateTime
如何将 2018051822111234L
之类的 long 值转换为 yyyyMMdd HH:mm
?
2018051822111234 -> 2018 05 18 22:11:12.
我尝试使用 LocalDate.parse
和 DateFormatter(yyyy-MM-dd'T'HH:mm:ssZZZZZ)
。它对我不起作用。
String asString = Long.toString(2018051822111234L);
asString = asString.substring(0, asString.length() - 2);
String result = LocalDateTime.parse(asString, DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))
.format(DateTimeFormatter.ofPattern("yyyy MM dd HH:mm:ss"));
尼采先生已经提供。只有我:我想解析输入的完整精度 long
。如果一开始没有解析信息,则稍后丢弃信息比稍后添加信息更容易。
Java9 解法:
DateTimeFormatter longFormatter = DateTimeFormatter.ofPattern("uuuuMMddHHmmssSS");
DateTimeFormatter desiredFormatter = DateTimeFormatter.ofPattern("uuuu MM dd HH:mm:ss");
String asString = Long.toString(2018051822111234L);
String result = LocalDateTime.parse(asString, longFormatter)
.format(desiredFormatter);
这会打印
2018 05 18 22:11:12
正如您自己所说,这在 Java 8 中不起作用,因为 this bug in the JRE: DateTimeFormatter won't parse dates with custom format "yyyyMMddHHmmssSSS"。错误报告提到了以下解决方法:
DateTimeFormatter longFormatter = new DateTimeFormatterBuilder()
.appendPattern("uuuuMMddHHmmss")
.appendValue(ChronoField.MILLI_OF_SECOND, 3)
.toFormatter();
asString += '0';
解决方法格式化程序在秒上有三位小数,对应于毫秒,而您的 long
只有两位。所以上面我在解析之前附加了一个额外的 0
到字符串。这是我在 Java 8 中可以开始工作的(也尝试过 appendFraction()
,但没有成功)。现在结果和上面一样。
如何将 2018051822111234L
之类的 long 值转换为 yyyyMMdd HH:mm
?
2018051822111234 -> 2018 05 18 22:11:12.
我尝试使用 LocalDate.parse
和 DateFormatter(yyyy-MM-dd'T'HH:mm:ssZZZZZ)
。它对我不起作用。
String asString = Long.toString(2018051822111234L);
asString = asString.substring(0, asString.length() - 2);
String result = LocalDateTime.parse(asString, DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))
.format(DateTimeFormatter.ofPattern("yyyy MM dd HH:mm:ss"));
尼采先生已经提供long
。如果一开始没有解析信息,则稍后丢弃信息比稍后添加信息更容易。
Java9 解法:
DateTimeFormatter longFormatter = DateTimeFormatter.ofPattern("uuuuMMddHHmmssSS");
DateTimeFormatter desiredFormatter = DateTimeFormatter.ofPattern("uuuu MM dd HH:mm:ss");
String asString = Long.toString(2018051822111234L);
String result = LocalDateTime.parse(asString, longFormatter)
.format(desiredFormatter);
这会打印
2018 05 18 22:11:12
正如您自己所说,这在 Java 8 中不起作用,因为 this bug in the JRE: DateTimeFormatter won't parse dates with custom format "yyyyMMddHHmmssSSS"。错误报告提到了以下解决方法:
DateTimeFormatter longFormatter = new DateTimeFormatterBuilder()
.appendPattern("uuuuMMddHHmmss")
.appendValue(ChronoField.MILLI_OF_SECOND, 3)
.toFormatter();
asString += '0';
解决方法格式化程序在秒上有三位小数,对应于毫秒,而您的 long
只有两位。所以上面我在解析之前附加了一个额外的 0
到字符串。这是我在 Java 8 中可以开始工作的(也尝试过 appendFraction()
,但没有成功)。现在结果和上面一样。