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