如何将2018051822111234L
之类的长值转换为yyyyMMdd HH:mm
?
2018051822111234 -> 2018 05 18 22:11:12.
我尝试使用LocalDate.parse
和DateFormatter(yyyy-MM-dd'T'HH:mm:ssZZZZZ)
。它对我不起作用。
答案 0 :(得分:1)
SELECT [Year], Market,
ISNULL(Jan,0) AS Jan,
ISNULL(Feb,0) AS Feb, ...
答案 1 :(得分:0)
Nizet先生已经提供了an excellent answer。这只是我:我想解析输入long
的完整精度。如果最初没有解析它,那么以后添加信息会比以后更容易丢弃信息。
Java 9解决方案:
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
正如您自己已经说过的那样,由于this bug in the JRE: DateTimeFormatter won't parse dates with custom format "yyyyMMddHHmmssSSS",这在Java 8中不起作用。错误报告提到了以下解决方法:
DateTimeFormatter longFormatter = new DateTimeFormatterBuilder()
.appendPattern("uuuuMMddHHmmss")
.appendValue(ChronoField.MILLI_OF_SECOND, 3)
.toFormatter();
asString += '0';
变通方法格式化程序在秒数上有三位小数,对应于毫秒,而long
只有两位小数。所以上面我在解析前向字符串添加了额外的0
。这是我可以在Java 8中工作的(也试过appendFraction()
,徒劳)。现在结果与上面相同。