簡體   English   中英

解析Armydate長號到LocalDate

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM