Javascript 将UTC unixTimeStamp转换为MM/DD/YYYY HH:MM:SS时区,无需任何外部JS库

Javascript 将UTC unixTimeStamp转换为MM/DD/YYYY HH:MM:SS时区,无需任何外部JS库,javascript,datetime,timezone,Javascript,Datetime,Timezone,我有unix时间戳值,它是UTC。我想把时间戳转换成本地日期和时区时间 通过使用以下代码,我可以转换到UTC日期和时间 function convertTimestamp(timestamp) { var d = new Date(timestamp * 1000), yyyy = d.getFullYear(), mm = ('0' + (d.getMonth() + 1)).slice(-2), dd = ('0' + d.getDate()).slice(-2)

我有unix时间戳值,它是UTC。我想把时间戳转换成本地日期和时区时间

通过使用以下代码,我可以转换到UTC日期和时间

function convertTimestamp(timestamp) {
  var d = new Date(timestamp * 1000),
    yyyy = d.getFullYear(),
    mm = ('0' + (d.getMonth() + 1)).slice(-2),
    dd = ('0' + d.getDate()).slice(-2),
    hh = d.getHours(),
    h = hh,
    min = ('0' + d.getMinutes()).slice(-2),
    time;
    time = yyyy + '-' + mm + '-' + dd + ', ' + h + ':' + min + ' ';
  return time;
}
例如:

3680283088=>2017年10月5日美国东部夏令时13:46:49


请推荐将UTC时间戳转换为带时区的本地日期和时间的正确方法。

如果环境完全实现,您可以使用以下一些选项:

var d = new Date(yourTimestamp);
var s = d.toLocaleString('en-US', {hour12: false, timeZoneName: 'short'}).replace(',','');
// example: "8/16/2017 12:58:07 PDT"

请注意,
replace
是因为在我的Chrome浏览器上,日期和时间部分之间有一个逗号,而您没有要求。另外请注意,其他实现可能会有所不同,因此这不能保证在任何地方都提供完全相同的输出。

timestamp
3680283088
提供2086年的日期,您确定这是正确的值吗?这只是一个伪值在这种情况下,我认为完全值得使用库-我个人喜欢。要处理时区,您还需要。另一个细节是,像
EDT
这样的短名称是。更喜欢使用(格式总是
地区/城市
,如
美国/纽约
欧洲/柏林
)@Hugo-在这种情况下,缩写是显示值的一部分,因此它不是tzid的真正位置。然而,有些缩写确实模棱两可,tzdb一直在删除“发明”的缩写,用数字偏移量代替它们。所以,是的,这有很多问题。另外,不要忘记Intl/402,正如我在回答中所示。现在它几乎无处不在,所以现在是开始使用它的好时机。:)是的,是的(我维护它)。我同意你的看法。只是OP要求一个没有外部依赖关系的解决方案。