javascript - Stange javascript Date 在特定日期的行为

标签 javascript angularjs date

<分区>

我注意到 javascript 在管理这个特定日期时有一个奇怪的行为

"31-12-2017 23:59:59"

我有一个 API,我调用它并返回一些日期作为字符串,我必须使用 js 将它们转换为日期。

我的代码是这样的

while (i<array.length){
                                array[i].start_date = new Date (array[i].start_date);
                                array[i].start_date.setHours(array[i].start_date.getHours()+1);
                                array[i].start_date = $filter('date')(array[i].start_date, "dd-MM-yyyy HH:mm:ss");

                                array[i].end_date = new Date (array[i].end_date);
                                array[i].end_date.setHours(array[i].end_date.getHours()+1);
                                array[i].end_date = $filter('date')(array[i].end_date, "dd-MM-yyyy HH:mm:ss");  
                                $scope.insSupplies.push(array[i]);

                        i++;
                    };

其中 array 是我要查询的 API。

这里的问题是当我的代码尝试这样做时

array[i].end_date = new Date (array[i].end_date);

在这个日期

"31-12-2017 23:59:59"

array[i].end_date 变为 Invalid Date

这是怎么发生的?

编辑:

var date = "31-12-2017 23:59:59"
var dateSplitted = date.split("-");
var dateInverted = dateSplitted[1] +"-" +dateSplitted[0] +"-"+dateSplitted[2];
dateSplitted = dateInverted.split(" ");
alert(dateSplitted[0]+"T"+dateSplitted[1]+"Z");
alert(new Date(dateSplitted[0]+"T"+dateSplitted[1]+"Z"));

我实现了这个粗略的方法来解析我的日期,但我不明白怎么错了 有帮助吗?

最佳答案

该日期不是 Date 对象需要解析的任何格式,也不是通常支持的格式,尽管它不是必需的。

需要解析的唯一格式Date是ISO-8601子集defined by the specification .该日期以该格式为 "2017-12-31T23:59:59"

由于历史原因,xx-xx-xxxx 通常被视为美国格式的日期(即使在非美国地区),即 MM-DD-YYYY 而不是美国以外常见的更合理的格式 DD-MM-YYYY。但即便如此,它也不是通用的,也没有具体说明。唯一未指定但的格式,据我所知,通用格式是DD/MM/YYYY(同样是美国格式)。

关于javascript - Stange javascript Date 在特定日期的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45997207/

相关文章:

javascript - google.script.run 不返回字符串

javascript - JS中如何获取同级元素值?

javascript - AngularJS 中的文档 getelementbyid 选项 selectedindex

javascript - "ReactFauxDOM is not defined"

javascript - 使用jqLit​​e隐藏和显示html元素

angularjs - 如何从浏览器控制台访问和测试 AngularJS 过滤器?

r - 如何在 R 中转换 Redis 日期

javascript - 将 HTML 表格(作为字符串)转换为 JS 对象数组

mysql - 显示 MySQL 中不完整日期列表中的前一个日期

javascript - 有人能解释一下这个奇怪的 javascript 日期输出吗?