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

时间:2014-01-07 07:17:59

标签: javascript datetime timezone

我正在使用以下代码以正确的格式获取当前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时间。

谢谢!

3 个答案:

答案 0 :(得分:6)

一些事情......

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

  • EST也没有完整定义时区。它仅定义了冬季使用的时区的一部分。另一半叫做Eastern Daylight Time,缩写为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")
    

答案 1 :(得分:3)

以下答案(从本网站上的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

答案 2 :(得分:0)

以下行将起作用:

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