2016-05-12 53 views
1

我需要計算一個日期並寫下下一個。Chrome Javascript日期構造器BUG?

new Date(service.today().getTime() + (service.plazo * service.DAY_MILLISECONDS)) 

service.today = function() { 
    var now = new Date(); 
    now.setHours(0,0,0,0); 
    return now; 
}; 

service.DAY_MILLISECONDS = 60*60*24*1000; 

service.plazo是一個數字(1,2,3,4 ....)

結果

Wed May 18 2016 23:00:00 GMT-0300 (Hora est. Sudamérica Pacífico)

我改變時區在我的筆記本電腦:-3至-4

Wed May 18 2016 23:00:00 GMT-0400 (Hora est. Sudamérica Pacífico)

一切完美,但

new Date()

Thu May 12 2016 16:19:51 GMT-0300 (Hora verano Sudamérica Pacífico)

new Date(service.today().getTime() + (service.plazo * service.DAY_MILLISECONDS))

Wed May 18 2016 23:00:00 GMT-0400 (Hora est. Sudamérica Pacífico)

new Date(service.today().getTime())

Thu May 12 2016 00:00:00 GMT-0300 (Hora verano Sudamérica Pacífico)

new Date(service.plazo * service.DAY_MILLISECONDS)

Wed Jan 07 1970 21:00:00 GMT-0300 (Hora verano Sudamérica Pacífico)

爲什麼

  • 新的Date()」
  • 新的日期(service.today()的getTime())
  • 新的日期(service.plazo * service.DAY_MILLISECONDS)

是GMT- 0300和

  • 新的日期(service.today()的getTime()+(service.plazo * service.DAY_MILLISECONDS))

是GMT-0400

鉻版,錯誤:50.0.2661.94米

Chorme版46.0.2490.86(64位)的所有是GMT-0400 :)

IM CRAZY :(HELP !

+0

您發佈的代碼是您正在運行的**實際**代碼嗎?我問,因爲你在定義之前調用service.today()。如果你在這裏發佈一個可運行的代碼片段來展示這個問題,那就太好了。如果您更改了系統的時區偏移量,則應該看到不同的時區名稱。 – RobG

回答

1

由於時間變化(標準時間到夏令時),timeZoneOffset將根據您獲得的日期的哪個時間段而有所不同。

我猜夏令時可能在您的國家14日結束。這意味着5月14日之前的日期將是格林威治標準時間-0300,但是Hora veranoSudaméricaPacífico,之後你有-0400但是Hora est。SudaméricaPacífico

通過這種方式,您將得到您所在國家當前時間的特定日期的時間。時間更改日期和時區信息通常取決於操作系統,Chrome依賴於您的系統設置來確定它們。

+0

我認爲你已經完成了。我無法理解OP,「GMT-0300(Hora est。SudaméricaPacífico)」令人困惑。 – RobG

+0

謝謝。我在我的筆記本電腦中有自動時區配置,並且imy未來的日期有不同的類型區GMT-0400。 –