javascript日期因时区而异

javascript日期因时区而异,javascript,Javascript,我使用上述代码将用户定义的文本转换为实际日期,以便在我的代码的其余部分中使用。它对我来说似乎正常,但在另一个位于不同时区(我的时间为12小时)的系统上,日期显示为2月21日,而不是2月22日,也就是说,它比预期日期晚了一天运行。我不知道如何解决这个问题,也不知道可能是什么错误。有什么建议吗?在输出日期的方法中,您需要使用getUTC*而不是get*,即getUTCDate()。要生成具有UTC信息的日期对象,请参阅中的第二个答案。要避免时区问题,请使用UTC。你不必依赖图书馆;简单的ISO860

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

在输出日期的方法中,您需要使用
getUTC*
而不是
get*
,即
getUTCDate()
。要生成具有UTC信息的日期对象,请参阅中的第二个答案。要避免时区问题,请使用UTC。你不必依赖图书馆;简单的ISO8601日期字符串就足够了。请参阅,了解如何根据日期制作一个()

构造像
新日期('yyyy-mm-ddT00:00Z')
一样简单,所以只需对代码稍作修改即可创建日期


Z
表示UTC。我包括一个时间(
T00:00
),因此它与
toISOString

生成的时间相匹配,只需在UTC中执行所有操作即可。例如,使用ISO 8601日期字符串
新日期('yyyy-mm-ddT00:00Z')
,表示UTC(时区+0000)的
Z
,我该如何准确地做到这一点?
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);
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);