Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
时区更改时,JavaScript Date()会有所不同_Javascript_Date_Timezone - Fatal编程技术网

时区更改时,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别担心,我可能在其他问题上惹恼了别人。从昨天开始我就有一些奇怪的反对票。