new Date()返回javascript中日期-时间字符串中日期的前一天



我有一个现有的日期-时间字符串

new Date('2014-08-01T00:00:00')

但在angularJS视图中,它并没有返回2014-08-01,而是返回为2014-07-31。

我想知道这个日期时间字符串是否有效,如果无效,为什么它无效。

T是否是字符串返回错误日期的原因

console.log返回Thu Jul 31 2014 20:00:00 GMT-0400 (EDT) 的日期

谢谢

让我们称之为-2是有毒的投票否决。他们真的应该回忆起那些日子,那时他们正在努力理解现在出现在他们身上的基本概念。真遗憾

目前(2014年秋季),JavaScript的日期/时间格式在一个非常重要的方面与ISO-8601不同:如果字符串上没有时区指示器,则假定为Z("祖鲁",GMT)。

所以

new Date('2014-08-01T00:00:00')

是8月1日格林尼治时间午夜。如果你住在格林尼治时间以东,那将是当地时间的31日。

然而,这种与ISO-8601的不兼容正在ES6中得到修复,一些实现(包括Chrome中最新的V8)已经在更新它。ES6规范将默认时间更改为本地时间;查看PDF草案或此非官方HTML版本中的§20.3.1.15("日期-时间字符串格式",章节编号可能会更改)。

显示的日期使用浏览器/计算机的时区。这意味着,如果您在GMT-1并输入2014-08-01T00:00:00,则实际日期为2014-08-01T00:00:00 - 1 hour=2014-07-31T23:00:00

我在startdate=2021-10-27T00:00-04:00中有这个日期,d=新日期(data.StartDate)//输出截止日期2021年10月26日23:00:00 GMT-0500但日期在中央时区"2021年10月26日星期二23:00:00 GMT-0500"前一天(低于-6、-7、-8…)。

事实上,我用过这个,它运行良好,但对于中央时区不起作用var d=新日期(data.StartDate);console.log(data.startDate);$scope.txtStartDate=("0"+(d.getMonth()+1)).slice(-2)+"/"+("0"+d.getDate()).slice(-2)+"/"+d.getFullYear();

最新更新