在Javascript中将时间戳转换为不同时区的值
我有不同的时间戳和来自API的时区作为对象。例如:在Javascript中将时间戳转换为不同时区的值,javascript,datetime,Javascript,Datetime,我有不同的时间戳和来自API的时区作为对象。例如: {{'ts' : 1521311400000}, {'tz' : 'GMT+01:00'}} 如何使用toLocaleTimeString()将时间戳转换为该时区中的人类可读日期?我已尝试将选项对象中的时区作为所述的时区的值传递,但在DateTimeFormat()中出现无效时区的错误,无法确定正确的格式 要在设置日期格式时获得这种灵活性,您可能需要查看和。要在设置日期格式时获得这种灵活性,您可能需要查看和。如果您想要其他选项,您可以尝试以
{{'ts' : 1521311400000},
{'tz' : 'GMT+01:00'}}
如何使用
toLocaleTimeString()
将时间戳转换为该时区中的人类可读日期?我已尝试将选项
对象中的时区作为所述的时区
的值传递,但在DateTimeFormat()中出现无效时区的错误,无法确定正确的格式 要在设置日期格式时获得这种灵活性,您可能需要查看和。要在设置日期格式时获得这种灵活性,您可能需要查看和。如果您想要其他选项,您可以尝试以下方法:
function init() {
function formatFixedTimeZone(ts, tz) {
let offsetStr = tz.replace(/:/g, '');
let reverseOffset = offsetStr.replace(/[-+]/, sign => sign === '+' ? '-' : '+');
let time = new Date(ts);
let timeStr = time.toUTCString().replace('GMT', reverseOffset);
time = new Date(Date.parse(timeStr));
timeStr = time.toLocaleString('en-US', {
timeZone: 'UTC', // Don't change this from UTC for other time zones.
weekday: 'short',
month: 'short',
day: 'numeric',
year: 'numeric',
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
}) + ' ' + tz;
return timeStr;
}
let timeDisplay = document.getElementById('time');
function tick() {
let nowStr = formatFixedTimeZone(Date.now(), 'GMT+01:00');
timeDisplay.textContent = nowStr;
}
setInterval(tick, 1000);
}
普朗克:
这将显示固定时区中当前时间的运行计数,但我尝试以这样一种方式编写它:如果您不使用当前时间,而是使用API中的ts和tz值,那么根据您的需要和不同的输出格式调整它应该不会太难。如果您想要其他选项,可以尝试以下方法:
function init() {
function formatFixedTimeZone(ts, tz) {
let offsetStr = tz.replace(/:/g, '');
let reverseOffset = offsetStr.replace(/[-+]/, sign => sign === '+' ? '-' : '+');
let time = new Date(ts);
let timeStr = time.toUTCString().replace('GMT', reverseOffset);
time = new Date(Date.parse(timeStr));
timeStr = time.toLocaleString('en-US', {
timeZone: 'UTC', // Don't change this from UTC for other time zones.
weekday: 'short',
month: 'short',
day: 'numeric',
year: 'numeric',
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
}) + ' ' + tz;
return timeStr;
}
let timeDisplay = document.getElementById('time');
function tick() {
let nowStr = formatFixedTimeZone(Date.now(), 'GMT+01:00');
timeDisplay.textContent = nowStr;
}
setInterval(tick, 1000);
}
普朗克:
这将显示固定时区中当前时间的运行计数,但我尝试以这样的方式编写它:如果您不使用当前时间,而是使用API中的ts和tz值,适应您的需要和不同的输出格式应该不会太难。我已经研究了moment.js,但仅为一种情况使用整个库是有点过分了我已经研究了moment.js,但仅为一种情况使用整个库是有点过分了