如何从公元前几年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