我想在JavaScript中解析一个没有时区的日期。我试着:
new Date(Date.parse("2005-07-08T00:00:00+0000"));
返回2005年7月8日星期五02:00:00 GMT+0200(中欧夏令时):
new Date(Date.parse("2005-07-08 00:00:00 GMT+0000"));
返回相同的结果,并且:
new Date(Date.parse("2005-07-08 00:00:00 GMT-0000"));
也返回相同的结果。
我想解析时间:
没有时区。
而不调用构造函数Date。UTC或new日期(年、月、日)。
通过简单地将一个字符串传递到Date构造函数(没有原型方法)。
我必须生成一个Date对象,而不是String对象。
JavaScript中的日期只是在内部保持简单,因此日期-时间数据以UTC Unix历元(毫秒或毫秒)存储。
如果你想有一个“固定”的时间,无论你在地球上的任何时区都不会改变,你可以调整UTC时间以匹配当前的本地时区并保存它。在检索它时,无论您所在的本地时区是什么,它都会根据保存它的时区显示调整后的UTC时间,然后添加本地时区偏移量以获得“固定”时间。
保存日期(毫秒):
toUTC(datetime) {
const myDate = (typeof datetime === 'number')
? new Date(datetime)
: datetime;
if (!myDate || (typeof myDate.getTime !== 'function')) {
return 0;
}
const getUTC = myDate.getTime();
const offset = myDate.getTimezoneOffset() * 60000; // It's in minutes so convert to ms
return getUTC - offset; // UTC - OFFSET
}
检索/显示日期(毫秒):
fromUTC(datetime) {
const myDate = (typeof datetime === 'number')
? new Date(datetime)
: datetime;
if (!myDate || (typeof myDate.getTime !== 'function')) {
return 0;
}
const getUTC = myDate.getTime();
const offset = myDate.getTimezoneOffset() * 60000; // It's in minutes so convert to ms
return getUTC + offset; // UTC + OFFSET
}
然后你可以:
const saveTime = new Date(toUTC(Date.parse("2005-07-08T00:00:00+0000")));
// SEND TO DB....
// FROM DB...
const showTime = new Date(fromUTC(saveTime));