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

Javascript 如何将日期对象转换为格式化的本地日期时间字符串?,javascript,node.js,Javascript,Node.js,我正在尝试将日期对象转换为格式为“YYYYMMDDHHmmss”的本地时间 我想做的就是跟随 var currentDate = new Date(); var timezone = "Asia/Tokyo"; var currentDateJst = moment(currentDate).tz(timezone).format('YYYYMMDDHHmmss'); 我想知道如何在没有时刻时区库的情况下转换,如果你不想使用库,那么没有快速/简单的方法。一种方法是添加与UTC的差异 例如,东京

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

我想做的就是跟随

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

我想知道如何在没有时刻时区库的情况下转换如果你不想使用库,那么没有快速/简单的方法。一种方法是添加与UTC的差异

例如,东京时间为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);

如果要根据特定时区的日期-时间格式进行格式化,可以使用ECMAScript国际化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中有关于

的良好文档,您是否查看了?它有一些有用的方法,比如
getDate
getMonth
getFullYear
getHours
getMinutes
getSeconds
这对您有帮助吗?就像汤姆·斯科特在书中说的。您应该使用库
console.log(date.getFullYear()+“”+date.getMonth()+“”+date.getDate()+“”+date.getHours()+“”+date.getMinutes())谢谢你的建议。我混淆了如何将格式化时区和更改时区结合起来。