2016-04-14 27 views
0

我有一個接收日期字符串像2016-2-12 //('YYY-MM-DD')的API調用。MomentJS Parse午夜本地從日期字符串

我使用的是時區,但沒有任何運氣。

的最終目標是讓Unix時間戳適用的網站(而不是服務器)的時區的午夜2016年2月12日

我已經嘗試了很多類似的組合:

moment.tz('2016-2-12', 'America/New York').utc();

不過好像接收輸入日期爲UTC(我的服務器設置爲UTC),那麼做時區轉換之後,讓我對前一天的日期。

僅供參考,我正在生成日期範圍的報告。所以,如果輸入的是:

&start=2016-4-12&stop=2016-4-15 //and the timezone is America/New York

我想到的2016-4-12T00:00:00 -04:00的開始時間,但我一直與前一天的日期結束了。

我期待的功能是這樣的:

moment.tz('2016-2-12', 'YYYY-MM-DD', 'America/New York').startOf('day').utc();

+0

Th我認爲你的API也應該接受時區。 CMIIW – 2016-04-14 14:07:31

+0

我猜「*適用網站的時區*」意味着你想把字符串視爲本地的(因爲它沒有時區,按照ISO 8601而不是ECMAScript 2015),那麼這是許多其他的複製品問題如[*如何在解析ISO 8601日期字符串時假定本地時區*](http://stackoverflow.com/questions/15517024/how-to-assume-local-time-zone-when-parsing-iso-8601日期字符串),沒有moment.js標記。 – RobG

回答

0

只要我問的問題,胡鬧了幾個小時之後,我知道了。

moment.tz('2016-4-14', 'YYYY-MM-DD', 'America/New York').format();

正在產生2016-04-14T00:00:00-04:00

對不起在這裏浪費時間。我希望別人發現這是很有幫助的......

moment.tz('2016-4-14', 'YYYY-MM-DD', 'America/New York').endOf('day').format();

正在產生2016-04-14T23:59:59-04:00,以及和我可以很容易得到unix時間戳使用utc()

+0

這隻有在您知道主機的[* IANA時區*](https://www.iana.org/time-zones)時纔有用。更簡單的解析爲本地(參見[*如何在解析ISO 8601日期字符串時假設本地時區*](http://stackoverflow.com/questions/15517024/how-to-assume-local-time-zone - 當 - 解析-ISO-8601-日期字符串))。 – RobG