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

And*_*w R 6 javascript timezone datetime

我正在使用以下代码以正确的格式获取当前的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);
Run Code Online (Sandbox Code Playgroud)

我们要做的是为EST设置一致的时间戳,无论浏览器在世界的哪个位置,因此最初使用UTC时间.

谢谢!

Mat*_*int 7

一些东西...

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

  • EST也没有完整定义时区.它仅定义了冬季使用的时区的一部分.另一半叫做Eastern Daylight Time,缩写为EDT.你的客户可能是指"东部时间",这将需要采取考虑.

  • 定义时区的典型方法是作为IANA时区数据库的标识符.您可以在时区标签wiki中阅读更多相关信息.例如,如果您的客户在美国意味着东部时间,那么您的时区是"America/New_York".

  • JavaScript固有地对时区一无所知,除了它自己和UTC.(bjb568给出的链接不能正确处理夏令时.)为了在客户端上使用它们,您需要使用我在此列出的库之一.

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

  • 你可能会对像moment.js这样的库做得很好,而且它是moment-timezone附加组件.例如:

    moment().tz("America/New_York").format("YYYY-MM-DD HH:mm:ss")
    
    Run Code Online (Sandbox Code Playgroud)