如何将日期对象转换为格式化的本地日期时间字符串?

时间:2018-02-01 02:31:08

标签: javascript node.js

我正在尝试将日期对象转换为由“YYYYMMDDHHmmss”格式化的本地时间。

我想做的就像跟随。

var currentDate = new Date();
var timezone = "Asia/Tokyo";
var currentDateJst = moment(currentDate).tz(timezone).format('YYYYMMDDHHmmss');

我想知道如何转换没有 时刻 - 时区

2 个答案:

答案 0 :(得分:0)

如果你不想使用图书馆,那么没有快速/简单的方法。一种方法是添加与UTC的差异。

例如tokoy是UTC + 9。所以现在你可以这样做:

const yourTime = new Date();    
console.log('your date is: ' + yourTime);

const minutesFromUTC = yourTime.getTimezoneOffset();    
const utcTime = new Date(yourTime.setMinutes(yourTime.getMinutes()+minutesFromUTC));
console.log('utc date is: ' + utcTime);

const tokyoFromUTC = 9*60; // Tokya is 9 hours    
const tokyoTime = new Date(utcTime.setMinutes(utcTime.getMinutes()+tokyoFromUTC));
console.log('tokyo date is: ' + tokyoTime);

https://jsfiddle.net/fz79mdg2/

答案 1 :(得分:0)

如果要根据特定时区的日期时间格式进行格式化,可以使用ECMAScript Internationalization API。例如:

new Intl.DateTimeFormat(
    'ja-JP',
    {
        hour: '2-digit',
        minute: '2-digit',
        second: '2-digit',
        year: 'numeric', // 2018
        month: '2-digit',
        day: '2-digit',
        timezone: 'Asia/Tokyo' // Format in the order how it's used in Asia/Tokyo
    }
).format(new Date()).replace(/\D/g, '')

最后,我刚刚删除了非数字字符,以您提出的方式显示。

MDN中有关Intl.DateTimeFormat

的详细文档