用于不同时区的Javascript DateFormat

Eli*_*lie 10 javascript

我是一名Java开发人员,我已经习惯了SimpleDateFormat类,它允许我通过设置时区将任何日期格式化为任何格式.

Date date = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");

sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
System.out.println(sdf.format(date)); // Prints date in Los Angeles

sdf.setTimeZone(TimeZone.getTimeZone("America/Chicago"));
System.out.println(sdf.format(date)); // Prints same date in Chicago
Run Code Online (Sandbox Code Playgroud)

SimpleDateFormat是一个非常简洁的Java解决方案,但不幸的是我在Javascript中找不到任何类似的替代方案.

我在Javascript中扩展Date原型以完全相同.我有Unix格式的日期,但我想在不同的时区格式化它们.

Date.prototype.format = function(format, timezone) {
    // Now what?
    return formattedDate;
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种巧妙的方法来做到这一点,而不是一个黑客.

谢谢

小智 6

我认为接受的答案不正确。有一种格式化时区的方法。

console.log(new Date().toLocaleDateString('en-US', {timeZone: 'America/Denver'}))
// 11/13/2018
console.log(new Date().toLocaleTimeString('en-US', {timeZone: 'America/Denver'}))
// 2:30:54 PM
console.log(new Date().toLocaleTimeString('en-US', {timeZone: 'America/New_York'}))
// 4:31:26 PM
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString