Javascript 如何将UTC日期/时间转换为EST日期/时间

Javascript 如何将UTC日期/时间转换为EST日期/时间,javascript,datetime,timezone,Javascript,Datetime,Timezone,我正在使用以下代码以正确的格式获取当前UTC时间,但是客户机返回并要求时间戳现在使用EST而不是UTC。我已经搜索了Google和stackoverflow,但找不到一个与我现有代码兼容的答案 var currentdate = new Date(); var datetime = currentdate.getFullYear() + ":" + ("0" + (currentdate.getUTCMonth()+1)).slice(-2) + ":"

我正在使用以下代码以正确的格式获取当前UTC时间,但是客户机返回并要求时间戳现在使用EST而不是UTC。我已经搜索了Google和stackoverflow,但找不到一个与我现有代码兼容的答案

var currentdate = new Date(); 
var datetime = currentdate.getFullYear() + ":"
            + ("0" + (currentdate.getUTCMonth()+1)).slice(-2) + ":"
            + ("0" + currentdate.getUTCDate()).slice(-2) + ":"
            + ("0" + currentdate.getUTCHours()).slice(-2) + ":"  
            + ("0" + currentdate.getUTCMinutes()).slice(-2) + ":" 
            + ("0" + currentdate.getUTCSeconds()).slice(-2);
我们试图做的是将一致的时间戳设置为EST,而不管浏览器位于世界何处,因此最初使用UTC时间

谢谢

有几件事

  • 术语“EST”可以用于北美的东部标准时间,也可以用于澳大利亚的东部标准时间。大多数时区缩写都不是唯一的,所以应该更具体一些

  • EST也没有完整定义时区。它只定义了冬季月份使用的部分时区。另一半称为东部夏时制,缩写为EDT。您的客户可能指的是“东部时间”,这需要同时考虑两者

  • 定义时区的典型方法是将其作为一个标识符。您可以在中阅读更多关于它的信息。例如,如果您的客户指的是美国东部时间,则您的时区为“美国/纽约”

  • JavaScript本质上对时区一无所知,除了它自己的时区和UTC之外。(bjb568提供的链接无法正确处理夏令时。)为了在客户端上与他们协作,您需要使用

  • 您当前的代码在输出方面有点奇怪。通常冒号仅用于分隔时间,您可以将其用于所有部分。无论如何,它没有转换任何东西,只是输出UTC

  • 您可能会很好地使用像这样的库及其附加组件。例如:

    moment().tz("America/New_York").format("YYYY-MM-DD HH:mm:ss")
    
    • 以下答案(从本网站上抄袭)对我来说非常有效。它可以轻松正确地将以下祖鲁时间(与UTC相同)“2014-10-09T20:30:54Z”转换为南非时间

      var tmpDate = New Date("enter any valid Date format here")
      
      javascript函数将自动将其转换为本地时间

      例如:

      var tmpDate = new Date("Fri Jul 21 02:00:00 GMT 2012")
      alert(tmpDate);
      //Result: Fri Jul 20 22:00:00 EDT 2012
      
      下面的行将起作用:

      console.log(moment().tz("America/New_York").format("YYYY-MM-DD HH:mm:ss"))
      

      是的可能重复,除了链接不能正确处理夏令时。Matt,客户想要美国东部时间(马萨诸塞州波士顿),夏令时不做任何更改。这就是为什么我没有使用任何解释DST的库。至于格式,这是注入到一个分析应用程序,所以格式是非常具体的,并要求是我在这里的方式。只是一个建议,但也许你应该验证的要求。波士顿确实遵循夏时制。我所知道的唯一故意忽略DST的场景是在金融部门(股票交易),只有在特定场景中。