2016-11-30 22 views
0

有沒有辦法到UTC字符串格式「二○一六年十一月三十〇日上午03時05分24秒」的轉換到基於瀏覽器的時區(比如)在JavaScript中不使用像moment.js這樣的第三方庫/腳本?將UTC時間字符串到基於瀏覽器的時區在JavaScript

實施例 - 如果時區爲IST(印度標準時間),其是5小時,提前UTC 30分鐘輸出應爲2016年11月30日上午08點35分24秒

+0

你可以檢查'date.toLocaleString()',但我建議使用'moment'。 – Rajesh

+0

這可能有所幫助:http://stackoverflow.com/questions/8469436/how-format-javascript-date-with-regard-to-the-browser-culture – Rajesh

回答

3

它如果你使用的時刻將是最好的。

var localTimeInUTC = moment.utc('11/30/2016 3:05:24 AM','MM/DD/YYYY HH:mm:ss A').toDate(); 
localTime = moment(localTimeInUTC).format('YYYY-MM-DD HH:mm:ss A'); 
console.log(localTime); // It will be in your browser timezone 

在簡單的時刻。

moment.utc(utcDateTime, utcDateTimeFormat).local().format(specifiedFormat) 

好吧現在你清除了你想要做的沒有第三方庫,那麼也是可能的。

  1. 以本地時區偏移
  2. 從UTC字符串
  3. 創建日期對象添加本地的時區偏移量是

或簡單的方式沒有第三方庫

var dateStr = '11/30/2016 3:05:24 AM'; 
var date = new Date(dateStr + ' UTC'); 
console.log(date.toString()); 

演示here

+0

請閱讀問題。這不是OP正在尋找的 – Rajesh

+0

我編輯了這個問題。我們可以根據時區以相同的格式獲取日期時間字符串,而無需像其他第三方庫那樣使用時間嗎? – Ashley

+0

@Ashley是的,你可以隨時查看我編輯的答案。 –

2

你可以做這樣的事情。

var dp = "11/30/2016 3:05:24 AM".split(/[/: ]/); 
 
var dateLocale = new Date(Date.UTC(dp[2], dp[0]-1, dp[1], (dp[3]%12 + (dp[6]=='PM' ? 12 : 0)), dp[4], dp[5])); 
 
console.log(dateLocale.toString());

拆分組件中的日期,並傳入Date.UTC功能自1970年1月1日00:00:00 UTC返回毫秒數的各個部分。請參見Date.UTC

創建一個傳遞此值的新日期對象,它將返回本地時區中的日期。

+0

感謝您的回答!同樣使用date.toLocaleString()在區域設置瀏覽器文化中給出datetime字符串,如11/30/2016 8:35:24 AM。 [Demo](https://jsfiddle.net/kvtv4unq/1/)在這裏。 – Ashley

相關問題