簡體   English   中英

Angular-Ui Bootstrap Popup DatePicker 的 ngModelOptions 的時區屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM