Env*_*nov 16 java truncate java-8 java-time
我希望将毫秒截断到几天,我可以使用
Instant.now().truncatedTo(ChronoUnit.DAYS).toEpochMilli()
Run Code Online (Sandbox Code Playgroud)
但我无法截断ChronoUnit.MONTH(它抛出异常).我需要使用日历吗?
Sim*_*mon 23
这是java.time.temporal.TemporalAdjusters为了什么.
date.with(TemporalAdjusters.firstDayOfMonth()).truncatedTo(ChronoUnit.DAYS);
Run Code Online (Sandbox Code Playgroud)
ass*_*ias 16
一种方法是手动将日期设置为该月的第一天:
import static java.time.ZoneOffset.UTC;
import static java.time.temporal.ChronoUnit.DAYS;
ZonedDateTime truncatedToMonth = ZonedDateTime.now(UTC).truncatedTo(DAYS).withDayOfMonth(1);
System.out.println(truncatedToMonth); //prints 2015-06-01T00:00Z
long millis = truncatedToMonth.toInstant().toEpochMilli();
System.out.println(millis); // prints 1433116800000
Run Code Online (Sandbox Code Playgroud)
或者使用a的替代方案,LocalDate可能更清洁:
LocalDate firstOfMonth = LocalDate.now(UTC).withDayOfMonth(1);
long millis = firstOfMonth.atStartOfDay(UTC).toEpochSecond() * 1000;
//or
long millis = firstOfMonth.atStartOfDay(UTC).toInstant().toEpochMilli();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11034 次 |
| 最近记录: |