时区更改时,JavaScript Date()会有所不同
我需要将日期转换为时区更改时,JavaScript Date()会有所不同,javascript,date,timezone,Javascript,Date,Timezone,我需要将日期转换为mm dd yyyy格式。所以我用了这样的方法: var dt=new Date(2016-06-21); var ddte=''; ddte=(("0" + (dt.getMonth() + 1)).slice(-2))+"-"+(("0" + dt.getDate()).slice(-2))+"-"+dt.getFullYear(); 它在我的本地时区(GMT+05:30)工作正常。但当我将时区更改为格林尼治标准时间-5:00时,它给出了错误的结果:06-20-201
mm dd yyyy
格式。所以我用了这样的方法:
var dt=new Date(2016-06-21);
var ddte='';
ddte=(("0" + (dt.getMonth() + 1)).slice(-2))+"-"+(("0" + dt.getDate()).slice(-2))+"-"+dt.getFullYear();
它在我的本地时区(GMT+05:30
)工作正常。但当我将时区更改为格林尼治标准时间-5:00时,它给出了错误的结果:06-20-2016
。我想要的结果是06-21-2016
这不是虫子。这就是时区的工作原理(世界上任何地方的同一时间不是同一个日历日) 如果您实际上不需要高级日期功能(似乎您只需要一些好的旧字符串操作),我的建议是首先不要使用
date
var parts = "2016-06-21".split("-");
var mdy = parts[1] + "-" + parts[2] + "-" + parts[0];
添加一些错误检查,您就完成了。传递到
date()
构造函数的日期将被视为UTC时区。使用Date.getMonth()获取时间将获取您的本地时区。您可能正在查找Date.getUTCMonth()
var dt=新日期(“2016-06-21”);
var-ddte='';
ddte=((“0”+(dt.getUTCMonth()+1)).slice(-2))+“-”+((“0”+dt.getUTCDate()).slice(-2))+“-”+dt.getUTCFullYear();
控制台日志(ddte)代码>var dt=新日期('2016-06-21');代替日期(2016-06-21)。缺少单引号。您如何更改时区?为什么它是一个错误?可能那个时区就是今天。好吧,时区就是这样工作的。不是每个地方都在同一时间有相同的日历日。但我只是想把日期转换成所需的格式并显示出来。它真的取决于时区吗?我不明白@RobG别担心,我可能在其他问题上惹恼了别人。从昨天开始我就有一些奇怪的反对票。