1
var dt_now = '2-22-2013';//mm-dd-yyyy, this is dynamic in actual code
            dt_now = dt_now.split("-");
            dt_now = addZero(dt_now[2])+'-'+addZero(dt_now[0])+'-'+addZero(dt_now[1]);
            dt_now = new Date(dt_now);

我正在使用上面的代码将用户定义的文本转换为实际日期,以便在我的其余代码中使用。它对我来说似乎工作正常,但在位于不同时区(我的时间 -12 小时)的另一个系统上,日期显示为February 21st而不是Feb 22nd,也就是说,它比预期日期晚一天运行。我不知道如何解决这个问题或错误可能是什么。有什么建议么?

4

2 回答 2

0

在输出日期的方法中,您需要使用getUTC*而不是get*,即getUTCDate()。要使用 UTC 信息生成日期对象,请参阅如何将 JavaScript 日期转换为 UTC 中的第二个答案?

于 2013-02-19T11:33:33.090 回答
0

为避免时区问题,请使用 UTC。您不必依赖图书馆;简单的 ISO 8601 日期字符串就足够了。请参阅从日期Date.prototype.toISOString制作一个(兼容性)。

构造非常简单new Date('yyyy-mm-ddT00:00Z'),因此您只需对代码稍作更改即可创建Date

var dt_now = '2-22-2013';//mm-dd-yyyy, this is dynamic in actual code
dt_now = dt_now.split("-");
dt_now = addZero(dt_now[2])+'-'+addZero(dt_now[0])+'-'+addZero(dt_now[1])+'T00:00Z';
dt_now = new Date(dt_now);

Z表示UTC。_ 我包含了一个 time( T00:00),因此它与toISOString.

于 2013-02-19T11:39:42.450 回答