【问题标题】: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,并使用toLocaleStringIntl.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();
      

      【讨论】:

        【解决方案3】:

        您可以使用moment.js utcOffset 轻松实现此目的:

        const moment = require("moment");
        
        const timestamp = 1619071948 * 1000;
        
        console.log(moment(timestamp).utcOffset(180).format("YYYY-MM-DDThh:mm:ssZ"));
        

        提供的偏移量以分钟为单位

        https://momentjs.com/docs/#/manipulating/utc-offset/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-15
          • 2014-08-24
          • 2021-05-17
          • 2017-08-14
          • 1970-01-01
          • 2014-11-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多