這是我第一次得到這個結果。爲什麼新的日期設置爲今天返回昨天
我正在使用Telerik控件RadDatePicker,我正在分配日期客戶端。
的事情是,控制不接受一個字符串作爲日期,但日期對象的JavaScript
所以,我的代碼來設置日期在控制
var radDateControl = $find("radDateControl");
radDateControl.set_selectedDate(new Date('2016-04-26'));
但是,我意識到新的Date會像昨天一樣返回日期!爲什麼?
現在是東部時間下午5點58分(美國&加拿大)。如果我這樣做
alert(new Date('2016-04-26'));
我得到這個
Mon Apr 25 2016 20:00:00 GMT-0400 (Eastern Daylight Time)
爲什麼,我怎麼能得到一天的今天。
更新
我終於做到了是這樣的。希望它能幫助別人。
var dateAsString = "2016-04-26";
var year = dateAsString.split('-')[0];
var month = dateAsString.split('-')[1];
var day = dateAsString.split('-')[2];
var date = new Date(Date.UTC(year, month - 1, day, 0,0,0));
date.setTime(date.getTime() + date.getTimezoneOffset() * 60 * 1000);
rpdDateControl.set_selectedDate(date);
該日期顯然被解析爲午夜的UTC日期,因此在東部時間的時區,爲什麼看起來像「昨天」因爲你在UTC時間後4個小時(給定DST)。 – ManoDestra
您可以使用通用時間而不是像這樣的本地時間var utcDate = new Date(Date.UTC(2016,4,26,0,0,0)); –
仍然使用時區創建Date對象!這是從Chrome控制檯:新日期(Date.UTC(2016,04,26,0,0,0)) Wed 2016年5月25日20:00:00 GMT-0400(東部夏令時) –