我在 HTML 中定義了一個日期欄位
<input type="date" name="" (change)="handleBlur($event)" min="1970-01-01" max="9999-12-31"
value="{{ somedate| date:'yyyy-MM-dd' }}">
在 ts 檔案中我正在處理 onchange 事件
handleBlur(event: any) {
this.somedate= new Date(event.target.value).toISOString()
console.log('after', this.somedate)
this.formobject.controls['somedate'].setValue(this.somedate)
this.appService.updateSaveDataValue({ somedate: this.somedate})
}
此日期控制在某些 X 國家/地區非常有效,但在其他國家/地區無效。我的意思是用戶可以從日歷控制元件中選擇一個日期,也可以輸入一個日期值。但是,當用戶使用來自美國地區的相同工具時,此控制元件的行為會很奇怪。更改年份時,每輸入一次,日減一,用戶更改日時,月減一。我不知道如何解決它或導致問題的原因。
uj5u.com熱心網友回復:
JavaScript Date 物件有一個時間組件。new Date(...)將在用戶當前時區創建一個新的 Date 物件,其時間為“現在”。將該日期物件轉換為 ISO 字串時,它將標準化時間分量,這可能導致日期本身發生變化。
例如,假設我在 GMT 1 時區的凌晨 12:30 選擇了 2022 年 4 月 2 日這一日期。在.toISOString()此日期物件上呼叫時,它將轉換為 2022 年 4 月 1 日晚上 11:30 GMT 0。在接近午夜的時候,這也可能反過來發生。
為避免這種情況,您可以根據日期物件的日、月和年手動創建 ISO 字串,或者您可以使用庫來幫助您完成。有幾個庫可以幫助管理日期,例如 momentjs、Day.js、date-fns 等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/472582.html
上一篇:使用時間戳計算持續時間(字串)
