2014-01-07 128 views
4

我正在使用以下代码以正确格式获取当前UTC时间,但客户端已回来并要求时间戳现在位于EST中,而不是世界标准时间。我搜索了Google和stackoverflow,但无法找到适用于我现有代码的答案。如何将UTC日期/时间转换为EST日期/时间

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时间原本。

谢谢!

+2

可能重复(http://stackoverflow.com/questions/9070604/how-to-convert-datetime-从用户时区到est-in-javascript) – bjb568

+0

bjb是对的:) –

+0

是的,但链接无法正确处理夏令时。 –

回答

5

一些东西......

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

  • EST也没有定义完整的时区。它只定义了在冬季使用的部分时区。另一半称为东部夏令时,缩写为EDT。您的客户可能意味着“东部时间”,这需要考虑

  • 定义时区的典型方法是从the IANA time zone database作为标识符。您可以在the timezone tag wiki中阅读更多信息。例如,如果您的客户指的是美国东部时间,那么您的时区是“America/New_York”。

  • JavaScript固有地不知道关于时区的任何内容,除了它自己的和UTC。 (bjb568给出的链接不能正确处理夏令时。)要在客户端上使用它们,您需要使用one of the libraries I list here

  • 您的当前代码在输出方面有点奇怪。通常冒号用于分隔时间,并且您正在使用冒号来表示所有部分。无论如何,它不会转换任何东西,它只是输出UTC。

  • 你可能会做得很好,像moment.js和它的moment-timezone附加组件。例如:

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

Matt,客户希望美国EST(波士顿,马萨诸塞州),夏令时没有任何变化。这就是为什么我没有使用任何DST帐户的库。至于格式,这是注入到分析应用程序,所以格式是非常具体的,并要求我在这里的方式。 –

+1

只是一个建议,但也许你应该验证要求。波士顿确实遵循夏令时。我所知道的DST故意忽略的唯一情景是金融部门(股票交易),并且只有在特定情况下。 –

2

以下的答案(从这个link本网站复制)工作对我非常好。它容易并正确地将以下祖鲁时间(与UTC相同)“2014-10-09T20:30:54Z”转换为南非时间。

var tmpDate = New Date("enter any valid Date format here") 

javascript Date()函数会自动将它转换为当地时间。

实施例:

var tmpDate = new Date("Fri Jul 21 02:00:00 GMT 2012") 
alert(tmpDate); 
//Result: Fri Jul 20 22:00:00 EDT 2012 
的[如何日期时间从用户时区转化为EST在javascript]
相关问题