2017-01-19 69 views
0

我正在從API獲取服務器日期(包括時區)。我想將它轉換爲日期對象。Javascript給出無效日期

當我這樣做

var demo2 = new Date("THU JAN 19 15:37:56 PST 2017"); //It works! 

var demo = new Date("FRI JAN 20 07:50:07 SGT 2017"); //Invalid date 

爲什麼?如果它是一個SGT那麼它不工作,但它適用於PST

我想通過這個日期dateTimePicker的

$datetimepicker.datetimepicker({ 
     minDate: new Date(this.serverTime), 
     defaultDate: new Date(this.serverTime), 
    }); 

如何使用日期/ MomentJS我解決這個問題?

+1

您沒有時區。你有幾個字母可能指的是幾個時間部分時區之一的縮寫。如果您的服務器上的字符串確實如此 - 您必須返回服務器並輸出有效的輸出,最好採用ISO8601格式。 –

回答

-1

你有沒有嘗試使用這種格式:

new Date('1/20/2017 7:50:07 AM CST'); 

CST是同一時區,比北京時間

+1

大多數瀏覽器會將「CST」解釋爲美國的中央標準時間,而不是中國標準時間。不要。 –

0

如果您正在使用MomentJS構造建議你可以做這樣的事情。 (Date String, Date Format, TimeZone)

您可以找到區字符串在這裏:http://momentjs.com/timezone/

在你的情況你正在尋找新加坡是:Asia/Singapore

簡單的例子:

var date = moment.tz("Jay 20th 2017 8PM", "MMM Do YYYY hA", "Asia/Singapore"); 

這裏是一個鏈接構造函數文檔:http://momentjs.com/timezone/docs/

1

一般來說,你不應該解析時區縮寫。它們充其量並不一致,而且經常不明確。

例如,應該CST的意思是......

  • 中部標準時間(UTC-6)
  • 古巴標準時間(UTC-5)
  • 中國標準時間(UTC + 8)

我需要說更多嗎?

相關問題