亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

不能在日期字段中使用超過“2038”的年份:Java

不能在日期字段中使用超過“2038”的年份:Java

慕娘9325324 2023-07-13 14:04:39
我在應用程序中保存超過 2038 年的日期時遇到問題,在 jsp 頁面上,我從日歷中獲取輸入,例如 -registry.byId('endDateCal').set('value',?dojo.date.locale.parse('<c:out?value="${empty?taskForm.endDate???taskForm.defaultDate?:?taskForm.endDate}"/>',?{?????datePattern:?'<%=datePattern%>',?????selector:?"date"???}));我在 jsp 頁面上全局設置 datePattern???SimpleDateFormat?dateFormat?=?(SimpleDateFormat)DateFormat.getDateInstance(DateFormat.SHORT,?I18nUtility.getLanguageLocaleForCurrentUser()); ??????String?datePattern?=?dateFormat.toPattern();當這個值發送到我的 servlet 時,我會獲取過去的值,例如,如果我設置日期 9/30/2040,那么它將向 servlet 發送日期值 9/30/1941。
查看完整描述

1 回答

?
慕姐8265434

TA貢獻1813條經驗 獲得超2個贊

LocalDate? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // Modern class for representing a date-only value without time-of-day and without time zone.

.parse(

? ? "1/23/40" ,?

? ? DateTimeFormatter.ofPattern( "M/d/uu" )? // Defaults to century 20xx.?

)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // Returns a `LocalDate` object.

.toString()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // Generate text in standard ISO 8601 format.

2040-01-23

指定默認世紀

該類SimpleDateFormat有一個設置,用于在解析具有兩位數世紀的輸入字符串時假定哪個世紀:SimpleDateFormat::set2DigitYearStart。

但是......你應該停止使用這個類。

java.time

該類SimpleDateFormat是與最早版本的 Java 捆綁在一起的糟糕的日期時間類的一部分。這些類現在已成為遺留類,完全被 JSR 310 中定義的現代java.time類所取代。

LocalDate

該類LocalDate表示僅日期值,沒有時間、時區或相對于 UTC 的偏移量。

? 此類解析具有兩位數年份的輸入字符串,始終使用 20xx 世紀。

String?input?=?"1/23/40"?;
DateTimeFormatter?f?=?DateTimeFormatter.ofPattern(?"M/d/uu"?)?;
LocalDate?localDate?=?LocalDate.parse(?input?,?f?)?;

localDate.toString(): 2040-01-23

提示:我發現在商業應用程序中使用 2 位數年份非常麻煩。日期和月份的含糊性很容易造成誤解和溝通不暢。我建議始終使用 4 位數年份。

當跨文化共享數據時,這個問題更加嚴重。


查看完整回答
反對 回復 2023-07-13
  • 1 回答
  • 0 關注
  • 208 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號