簡體   English   中英

使用Firefox時,在Android設備上將javascript日期轉換為bst時間

[英]javascript dates converted to bst time on android devices when using Firefox

我有一個可在Chrome上運行的Web應用程序,而在Android設備上沒有任何問題,但是在Firefox上運行該應用程序時,它將“ newvalue”轉換為BST時區而不是GMT標准時間。

var  now = new Date();
var start = new Date();
var newvalue = new Date(now - start);

newvalue時區輸出為GMT + 0100(BST),但實際上應為GMT + 0000(GMT標准時間)

Firefox又增加了一個小時。

我曾嘗試轉換為UTC和GMT,但似乎無法正常工作。

有任何想法嗎?

好吧,嗯……嗯……我不清楚你在做什么。

var newvalue = new Date(now - start);

您要計時嗎?

無論如何,此行要做的第一件事是從現在開始減去,並以毫秒為單位給出兩個日期之間的差。 假設這種情況基本上是立即發生的,那么結果將大約為0毫秒(如果不是精確的話)。

當您創建日期並像這樣傳遞單個參數時,您要求的是原先的日期,即紀元后X毫秒。 時代定義為1970年1月1日(星期四)(出於我不願討論的原因)。 因此,通過創建一個新的日期為0的參數,您只是在要求瀏覽器提供一個時代。

為什么Firefox決定在BST而非GMT上您一個新紀元,我承認這確實很奇怪(因為1月1日顯然不在英國夏令時)。 但這事實可能無關緊要,因為這幾乎肯定不是您要在此處實現的目標。 如果您想計時,我建議您可能只想做:

var newvalue = start - now;

現在newvalue是時間差。 注意:我已經交換了現在開始,因為在您的示例中開始是在現在之后定義的,因此這將為您帶來正時差。

編輯以回應評論

為了清楚起見,我建議您不要使用減法結果創建新的Date對象。

如果要使用日期獲取兩次之間的毫秒數,只需將它們相減即可:

var start = new Date();
// do time consuming stuff
var end = new Date();
var difference = end - start; // NOT: var difference = new Date(end - start)

通過將兩個日期轉換為UTC日期,然后使用毫秒查找兩個日期之間的差異,解決了該問題。 然后,它可以在Android上運行。

謝謝你的協助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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