2012-11-29 223 views
34

好吧,說JSON解析字符串UTC如下日期:Javascript來UTC轉換爲本地時間

2012-11-29 17:00:34 UTC 

現在,如果我想這個UTC日期轉換到我的本地時間,我該怎麼辦呢?

感謝您的回答

=====

那麼,如何才能把它格式化爲別的東西像 'YYYY-MM-DD HH:MM:SS Z'?

date.toString('yyyy-MM-dd HH:mm:ss z');行不通了:/

+1

'new Date(「2012-11-29 17:00:34 UTC」)'將在當地時間使用頁面的客戶端 – Esailija

+0

您可以使用空格或符號將其拆分爲數組。假設你做了.split(「」)和帶有日期和時間的數組,並且將會形成「utc」。 然後像這樣再次分割它.split(「 - 」)並且像這樣分割時間.split(「:」)等等。 – yashas123

回答

44

嘗試:

var date = new Date('2012-11-29 17:00:34 UTC'); 
date.toString(); 
+0

date.toString('yyyy-MM-dd HH:mm:ss z')永不工作:/ – lannyboy

+8

好吧,我試用過IE和Firefox,它們都是NAN!失效日期? – lannyboy

+0

使用date.js庫[此作品](http://jsfiddle.net/brmr3623/7/)日期格式yyyy-MM-dd HH:mm:ss –

1

這應該工作

var date = new Date('2012-11-29 17:00:34 UTC'); 
date.toString() 
+0

如何將本地日期格式設置爲'yyyy-MM-dd HH:mm:ss z'? – lannyboy

29
var offset = new Date().getTimezoneOffset(); 

offset將在從本地時間到UTC分鐘的間隔。要從UTC日期獲得本地時間,您將從日期中減去分鐘數。

utc_date.setMinutes(utc_date.getMinutes() - offset); 
+5

我認爲這應該是減去偏移量,而不是添加偏移量。 – OnResolve

+1

+是合適的,因爲如果時區在1小時之後,則返回的值將是-60。 –

+3

@OnResolve Surabhi使用'+'是正確的。使用日期時。getTimezoneOffset',_「getTimezoneOffset()中的負數返回值表示當前位置在UTC之前,而正值表示位置在UTC之後。」_([** Tech Republic **](http:/ /www.techrepublic.com/article/convert-the-local-time-to-another-time-zone-with-this-javascript/))。 – WebWanderer

1

要格式化日期請嘗試以下功能:

var d = new Date(); 
var fromatted = d.toLocaleFormat("%d.%m.%Y %H:%M (%a)"); 

但這種方法的缺點是,它是一個非標準功能,在Chrome中工作,但在工作FF(afaik)。上述

克里斯

-6
/* 
* convert server time to local time 
* simbu 
*/ 
function convertTime(serverdate) { 
    var date = new Date(serverdate); 
    // convert to utc time 
    var toutc = date.toUTCString(); 
    //convert to local time 
    var locdat = new Date(toutc + " UTC"); 
    return locdat; 
} 
1

的解決方案是正確的,但在Firefox和Safari可能會崩潰!這就是webility.js試圖解決的問題。檢查toUTC函數,它適用於大多數主要瀏覽器,它返回ISO格式的時間