【问题标题】:Epoch to date UTC+3迄今为止的纪元 UTC+3
【发布时间】:2021-07-15 09:24:59
【问题描述】:
我使用此代码将纪元转换为人类可读的日期
var timestamp = 1293683278;
var date = new Date(timestamp*1000);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hours = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();
我需要将其更改为 UTC+3 我该怎么做?
感谢您的帮助
【问题讨论】:
标签:
javascript
date
epoch
【解决方案1】:
Date 构造函数将时间值视为 UTC。 Date 对象仅代表 UTC 时间,toString 方法产生的“本地”值使用系统设置来确定要使用的偏移量,但这只是为了产生时间戳,它不会改变基础日期或其时间值。
如果你想要一个特定的偏移量,你可以选择一个合适的IANA location,例如非洲/内罗毕,全年+3,并使用toLocaleString或Intl.DateTimeFormat生成时间戳,例如
console.log(
new Date().toLocaleString('default',{timeZone:'Africa/Nairobi', timeZoneName:'short'})
);
【解决方案2】:
只是好奇 - 但您不能在使用现有代码格式化之前将 3 小时附加到您的时间戳上。我很好奇是否有一些日期/日历的微妙之处,这不会可靠地工作。
const THREE_HOURS_IN_MS = 3*60*60*1000;
var date = new Date(timestamp*1000 + THREE_HOURS_IN_MS);
// rest of your code stays unchanged
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hours = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();