如何从公元前几年Javascript中的字符串Date创建Date对象?

如何从公元前几年Javascript中的字符串Date创建Date对象?,javascript,string,parsing,date,Javascript,String,Parsing,Date,我有下一个日期字符串: “2014年11月14日星期四01:01:00 GMT+0200(GTB标准时间)” 我正在尝试将其转换为日期对象: date = new Date("Thu Nov 14 0002 01:01:00 GMT+0200 (GTB Standard Time)") => Invalid Date {} 但它不起作用。及 date = new Date("Thu Nov 14 2 01:01:00 GMT+0200 (GTB Standard Time)")


我有下一个日期字符串:

“2014年11月14日星期四01:01:00 GMT+0200(GTB标准时间)”

我正在尝试将其转换为日期对象:

date = new Date("Thu Nov 14 0002 01:01:00 GMT+0200 (GTB Standard Time)")  
=> Invalid Date {}
但它不起作用。及

date = new Date("Thu Nov 14 2 01:01:00 GMT+0200 (GTB Standard Time)")  
=> Invalid Date {}
也不管用

但是

工作


有人知道一种优雅的解析方法吗?

Javascript日期基于1970年1月1日00:00:00.000 UTC以来的毫秒计数。在此之前的日期未定义

你必须想出你自己的方式来表示这样的日期

edit-well已经说过了,Javascript似乎愿意用大得离奇的负数offset来表示日期;不适合32位整数的偏移量。我怀疑你约会的根本原因仅仅是它的格式打乱了解析器。日缩写后应该有一个逗号

另一个问题(男孩,这比我想象的要有趣得多)是,在Chrome和Firefox中,至少100岁之前的任何一年都被视为20世纪一年的缩写


再次编辑-根据Mozilla文档,日期可以是纪元前-100000000天到纪元后100000000天范围内的任何日期。

您可以设置任何日期。直接使用时间戳包括分钟、小时和毫秒- 1970年之前的日期是负整数

alert(new Date(-62076675540000).toUTCString());

// >> Wed, 13 Nov 0002 23:01:00 GMT

Or you can set the date as a string by replacing the years to make it over 1000,
then subtracting the amount you added  with setFullYear()

var d=new Date("Thu Nov 14 1002 01:01:00 GMT+0200 (GTB Standard Time)")
d.setFullYear(d.getFullYear()-1000)
alert(d.toUTCString())

// >> Wed, 13 Nov 0002 23:01:00 GMT

You can automate a conversion to timestamps-

var s="Thu Nov 14 0002 01:01:00 GMT+0200 (GTB Standard Time)";
var y=s.split(' ')[3], y2=5000+(+y);
var d=new Date(s.replace(y,y2));
d.setFullYear(d.getFullYear()-5000)
var timestamp=+d;
alert(timestamp)
// >> -62076675540000
alert(new Date(-62076675540000).toUTCString());

// >> Wed, 13 Nov 0002 23:01:00 GMT

Or you can set the date as a string by replacing the years to make it over 1000,
then subtracting the amount you added  with setFullYear()

var d=new Date("Thu Nov 14 1002 01:01:00 GMT+0200 (GTB Standard Time)")
d.setFullYear(d.getFullYear()-1000)
alert(d.toUTCString())

// >> Wed, 13 Nov 0002 23:01:00 GMT

You can automate a conversion to timestamps-

var s="Thu Nov 14 0002 01:01:00 GMT+0200 (GTB Standard Time)";
var y=s.split(' ')[3], y2=5000+(+y);
var d=new Date(s.replace(y,y2));
d.setFullYear(d.getFullYear()-5000)
var timestamp=+d;
alert(timestamp)
// >> -62076675540000