如何防止 javascript 将我的日期转换为 GMT?

Chr*_*son 5 javascript datetime

我有一个时间戳

timestamp = 2015-02-22T10:00:00.000Z
Run Code Online (Sandbox Code Playgroud)

为什么在我执行此操作时将其转换为 GMT

var dt = new Date(timestamp);
console.log('dt = ' + dt); // prints Sun Feb 22 2015 05:00:00 GMT-0500 (EST)
Run Code Online (Sandbox Code Playgroud)

我不希望它将我的日期转换为 GMT。如何防止 javascript 转换我的日期?

jfr*_*d00 0

当您尝试执行时dt = ' + dt,Javascript 会尝试将dt对象转换为字符串,以便可以将其添加到另一个字符串中。它通过调用该dt.toString()方法来实现这一点,您看到的格式是日期对象的默认字符串转换。

仅供参考,默认格式如下所示:

Fri Mar 06 2015 19:24:42 GMT-0800 (Pacific Standard Time)
Run Code Online (Sandbox Code Playgroud)

不是 GMT 时间。显示的时间值为当地时间。它向您显示显示的当地时间是距格林威治标准时间 -0800 小时,但时间本身以当地时间表示。

想要截断最后一部分并显示的情况并不少见:

Fri Mar 06 2015 19:24:42
Run Code Online (Sandbox Code Playgroud)

可以这样做:

console.log('dt = ' + dt.toString().replace(/\sGMT.*$/, ""));
Run Code Online (Sandbox Code Playgroud)

工作演示:http://jsfiddle.net/jfriend00/hg5m0r1r/


如果您想要显示不同的内容,那么您应该自己构造您想要的字符串表示形式,而不是让系统自动调用.toString(). 您可以查看可用的 Date 对象方法并决定要显示的内容。Date 对象内部是自纪元时间以来的毫秒数,因此任何字符串表示形式都是某种类型的转换。你必须告诉它你想要什么转换。

您可以在此处查看多种日期方法的列表。