2017-05-19 71 views
0

將時代dateTime轉換爲人類可讀的,使用簡單的new date(1495159447834)就足夠了。將時代轉換爲人類可閱讀的特定時區

現在我遇到的問題是,對於我的混合應用程序,如果用戶在他的手機日期時間設置時區設置爲可以說格林尼治標準時間+12:00,人類可讀的日期時間將不同於我希望用戶擁有並且我希望他/她遵守服務器時區。

因此,我將如何將曆元號碼轉換爲人類可讀格式的特定給定時區。

我已經試過像例如:

var test= new Date('1495159447834 GMT+0800').toString(); 

,並返回我一個無效的日期。

如果可能,我會希望沒有任何庫。我在這裏查看了答案,我相信我找不到任何我正在尋找的答案。如果之前有任何相同主題的回答問題,請告訴我,我會解決這個問題!

+0

*「我希望他/她遵守服務器時區」* - 這不會混淆用戶嗎? – nnnnnn

+0

@nnnnnn原因是,用戶可以'欺騙'日期時間,如果它會遵循本地設備時區。由於正在開發的應用程序正在處理時間敏感的數據,因此服務器時區在我的情況下更加可行。 – Gene

回答

1

您可以使用偏移量將當前日期時間轉換爲具體時區。

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(); 
} 

該偏移量將是您的特定時區。例如:GMT +03:00,你的偏移量是+3。如果GMT -10:00,偏移量是-10

-1

將初始日期設置爲紀元並添加UTC單位。假設您有一個以秒爲單位存儲的UTC時代var。如何1234567890要轉換到合適的日期在本地時區:

var utcSeconds = 1234567890; 
var d = new Date(0); // The 0 there is the key, which sets the date to 
the epoch 
d.setUTCSeconds(utcSeconds); 

或者你可以使用momentjs

moment.unix(yourUnixEpochTime).format('dddd, MMMM Do, YYYY h:mm:ss A') 

,或者你可以用這樣的方式

var dateVal ="/Date(1342709595000)/"; 
 
var date = new Date(parseFloat(dateVal.substr(6))); 
 
document.write( 
 
    (date.getMonth() + 1) + "/" + 
 
    date.getDate() + "/" + 
 
    date.getFullYear() + " " + 
 
    date.getHours() + ":" + 
 
    date.getMinutes() + ":" + 
 
    date.getSeconds() 
 
);

相關問題