我的格式很长:
Long l = 20151228;
我想将它解析为LocalDate对象。
我该怎么做?
答案 0 :(得分:5)
使用java.time
,您可以将数字分解为各自的部分,并使用静态方法LocalDate.of
从中构建本地日期。
long militaryDate = 20151228L;
LocalDate ld = LocalDate.of((int) (militaryDate / 10000),
Month.of((int) (militaryDate / 100) % 100),
(int) (militaryDate % 100));
System.out.println(ld);
结果:
2015-12-28
答案 1 :(得分:0)
执行此操作的一种方法是将long
转换为String
并使用SimpleDateFormat
解析它:
long l = 20151228L;
DateFormat df = new SimpleDateFormat("yyyyMMdd");
Date d = df.parse(String.valueOf(l));
答案 2 :(得分:0)
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
LocalDate localDate = LocalDate.parse( df.format(df.parse(String.valueOf(l)) );
答案 3 :(得分:0)
我建议使用LocalDate::parse(String, DateTimeFormatter)
,如下所示:
Long l = 20151228L;
LocalDate date = LocalDate.parse(Long.toString(l), DateTimeFormatter.ofPattern("yyyyMMdd"));
System.out.println(date);
结果:
2015年12月28日
答案 4 :(得分:0)
我更喜欢RealSkeptic的答案,因为它是最有效的答案,但如果你不熟悉模运算,我会为你提供另一种选择。
您用于日期的整数格式实际上是BASIC_ISO_DATE格式。因此,您可以使用现有的java.time格式化程序:
int dateAsInt = 20151228; // btw no need to use long as it fits easily in an int
LocalDate date = LocalDate.parse(Integer.toString(dateAsInt), DateTimeFormatter.BASIC_ISO_DATE);
System.out.println(date);