[英]Get Day, Month, Year from Java Calendar instance
我有一個從 Java Calendar
派生的Instant
,例如c.toInstant()
,現在在不同的位置將其轉換為自定義日期 ZA8CFDE6331BD59EB2AC96F8911C4B66 的月份和年份。 我試過了:
if (instance.isSupported(ChronoField.DAY_OF_MONTH) && instance.isSupported(ChronoField.MONTH_OF_YEAR) && instance.isSupported(ChronoField.YEAR)) {
return new com.company.common.Date()
.setDay(instance.get(ChronoField.DAY_OF_MONTH))
.setMonth(instance.get(ChronoField.MONTH_OF_YEAR))
.setYear(instance.get(ChronoField.YEAR));
}
但是當我嘗試編譯 ErrorProne 時會拋出:
...impl/utils/DateUtils.java:21: error: [TemporalAccessorGetChronoField] TemporalAccessor.get() only works for certain values of ChronoField.
.setDay(instance.get(ChronoField.DAY_OF_MONTH))
^
我不確定為什么我在任何地方都找不到答案,但經過一番搜索后,我沒有找到任何有用的東西——盡管我可能錯過了一些東西。
Instant 只是一個時間戳——它只提供秒、毫秒和納秒。
如果您首先從日歷實例開始,您應該能夠簡單地使用
calendar.get(Calendar.YEAR)
calendar.get(Calendar.MONTH)
calendar.get(Calendar.DAY_OF_YEAR)
直接獲取日期值並跳過轉換為 Instant。
如果您更喜歡使用較新的時間 API 您可以從 ZonedDateTime 中獲取日期和時間,例如
Calendar calendar = Calendar.getInstance();
ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(calendar.toInstant(), calendar.getTimeZone().toZoneId());
zonedDateTime.getYear();
zonedDateTime.getMonthValue();
zonedDateTime.getDayOfMonth();
我沒有看到給出的示例的直接優勢,但如果您想使用更新的 java.util.time API 的更多功能,它可能會很有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.