为什么将新日期设置为今天会返回昨天
Why new Date set as today gives back yesterday
这是我第一次得到这个结果。
我正在使用Telerik控件RadDatePicker,并且正在分配日期客户端。
问题是该控件不接受字符串作为日期,而是 javascript 中的 Date 对象
因此,我在控件中设置日期的代码是
var radDateControl = $find("radDateControl");
radDateControl.set_selectedDate(new Date('2016-04-26'));
但是,我意识到新的日期正在恢复昨天的日期!为什么?
现在是东部时间下午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);
新创建的日期对象是完全正确的。这里的错误部分或至少让您感到困惑的部分是您的浏览器,将日期对象解析为当前时区。
如果您创建一个新的日期对象并将其保存到变量中...
var date = new Date('2016-04-26');
。你会得到你想要的。表示 26/04/2016(UTC 格式)的 Date 对象。
由于您使用浏览器获取日期对象值,因此该值仅通过本地时区(在东部夏令时间)进行解析。因此,如果要处理用于创建新日期对象的正确日期,可以使用.toUTCString()
.
我知道,解析时区可能真的很令人沮丧。为了处理不同的时区,您可以尝试时刻或时刻时区。我想时刻应该适合您的需求,但只是为了完成。
只需使用 Date.now() 即可。 我不确定为什么字符串不起作用,但这无论如何都会起作用。
您询问日期 26,但随着时区的更改,它会给您 2 小时,为什么不直接alert(new Date());
并让它为您提供当前日期?,还要检查它使用 ssh 转到服务器并键入日期,如果不是您的日期,您可以使用 tzselect 将服务器修改为您的日期
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 为什么将新日期设置为今天会返回昨天
- 如果今天,请检查日期,并返回今天还是正常日期
- JavaScript date 总是返回“2015-11-1”而不是今天的日期
- jQuery UI日期选择器getDate今天返回's的日期无效
- 如果bdays是今天或在未来7天的范围内,则返回true
- getDate+n的setDate今天返回's日期+n
- 一个双重javascript函数,用于转换长日期并以mm-dd-yyyy格式返回今天's日期