将大纪元时间转换为具有特定时区的可读性

Gen*_*ene 4 javascript datetime epoch

要将纪元dateTime转换为人类可读的,new date(1495159447834)就足够了。

我现在遇到的问题是,对于我的混合应用程序,如果用户将手机日期时间设置中的时区设置为GMT +12:00,则人类可读的dateTime将不同于我想要的用户拥有,我希望他/她遵循服务器时区。

因此,我将如何以人类可读的格式将纪元数转换为特定的给定时区。

我试过像这样的例子:

var test= new Date('1495159447834 GMT+0800').toString();
Run Code Online (Sandbox Code Playgroud)

它返回一个无效的日期。

如果可能,我希望没有任何库。我在这里浏览了所有答案,我认为找不到所需的答案。如果以前有相同主题的问题,请告诉我,我将结束此问题!

Hui*_*ing 7

您可以使用offset将当前日期时间转换为特定时区。

function convertEpochToSpecificTimezone(offset){
    var d = new Date(1495159447834);
    var utc = d.getTime() + (d.getTimezoneOffset() * 60000);  //This converts to UTC 00:00
    var nd = new Date(utc + (3600000*offset));
    return nd.toLocaleString();
}
Run Code Online (Sandbox Code Playgroud)

偏移量将是您的特定时区。例如:格林尼治标准时间+03:00,您的偏移量是+3。如果格林尼治标准时间-10:00,则偏移量为-10


Guy*_*nai 5

有多种方法可以在 Epoch 和人类可读格式之间进行转换

//Convert epoch to human readable date
var myDate = new Date( 1533132667*1000);
document.write(myDate.toGMTString()+"<hr>"+myDate.toLocaleString());
Run Code Online (Sandbox Code Playgroud)

//这将返回 2018 年 8 月 1 日星期三 14:11:07 GMT

  //Convert human readable dates to epoch
var myDate = new Date("Wed Aug 01 2018 14:11:07 GMT"); 
var myEpoch = myDate.getTime()/1000.0;
Run Code Online (Sandbox Code Playgroud)

// 这将返回 1533132667

供参考: https: //www.epochconverter.com/programming/#javascript

编辑#在这里添加了一个JSFiddle