[英]Timezone Property of ngModelOptions of Angular-Ui Bootstrap Popup DatePicker
我們在我們的應用程序中使用 Angular-Ui Bootstrap Popup DatePicker 並遇到了諸如前一天被選擇為用戶實際選擇的問題之類的問題。
我們將選擇器的日期設置為來自服務器 (json) 的 UTC。 雖然,Javascript Date 對象是本地的,因此不匹配。
作為一種解決方案(顯然),他們添加了一個 ngModelOptions ,我已經看到它像這樣使用:
var date = new Date()
$scope.timezone = ((date.getTimezoneOffset() / 60) * -100)
帶標記
<input type="date"
ng-model="dateModel"
ng-model-options="{timezone: timezone}" />
但是該選擇器的文檔並沒有真正解釋它如何使用/使用該時區屬性。 我能找到的最接近解釋的是 ngModelOptions 本身的文檔,它說:
您可以通過在 timezone 屬性中提供名稱來指定日期/時間輸入指令所期望的時區。
我希望有人可以簡要解釋該選擇器如何使用 ngModelOptions 指令的 timezone 屬性,以及我應該將其設置為 utc 還是將瀏覽器偏移量設置為 utc。
謝謝
對於那些仍在使用 Angular-UI Bootstrap 並尋找答案的人:
您可以使用 ng-model 選項,例如ng-model-options="{timezone: 'UTC'}"
。 這將轉換日期對象,使該時區的時間為 00:00。
如果沒有此設置,dateModel 值將是瀏覽器本地時間的午夜。 我的瀏覽器在 BST (UTC+1),所以默認日期是: Sat May 07 2022 00:00:00 GMT+0100 (British Summer Time)
,如果然后使用調用dateModel.toISOString()
這將轉換為` '2022-05-06T23:00:00.000Z'。
要獲取表示 UTC 午夜的日期對象,請設置選項,如下所示:
<input type="date"
ng-model="dateModel"
ng-model-options="{timezone: 'UTC'}" />
現在,當我選擇一個日期並在瀏覽器中查看它時,它顯示為Sat May 07 2022 01:00:00 GMT+0100 (British Summer Time)
,因此調用dateModel.toISOString()
會給出'2022-05-07T00:00:00.000Z'
(這是我發送到我的服務器的內容)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.