[英]parse armydate long number to LocalDate
我的格式很長:
Long l = 20151228;
我想將其解析為LocalDate對象。
我怎樣才能做到這一點?
使用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
一種方法是將long
轉換為String
並使用SimpleDateFormat
對其進行解析:
long l = 20151228L;
DateFormat df = new SimpleDateFormat("yyyyMMdd");
Date d = df.parse(String.valueOf(l));
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
LocalDate localDate = LocalDate.parse( df.format(df.parse(String.valueOf(l)) );
我建議使用如下所示的LocalDate::parse(String, DateTimeFormatter)
:
Long l = 20151228L;
LocalDate date = LocalDate.parse(Long.toString(l), DateTimeFormatter.ofPattern("yyyyMMdd"));
System.out.println(date);
結果:
2015-12-28
我更喜歡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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.