出於某種原因,從我的WebService的一個SOAP響應看起來是這樣的:轉換(YYYY/MM/DD HH:MM:SS:MS)格林尼治標準時間當地時間JavaScript的
2010/07/08 04: 21:24.477
當日期格式爲(YYYY/MM/DD),時間爲格林尼治標準時間
我真的不知道如何將其轉換爲本地時間,因爲格式是如此奇怪
出於某種原因,從我的WebService的一個SOAP響應看起來是這樣的:轉換(YYYY/MM/DD HH:MM:SS:MS)格林尼治標準時間當地時間JavaScript的
2010/07/08 04: 21:24.477
當日期格式爲(YYYY/MM/DD),時間爲格林尼治標準時間
我真的不知道如何將其轉換爲本地時間,因爲格式是如此奇怪
Date.parse
實際上應該將大部分日期字符串解析爲相應的時間戳。
的2次警告似乎是:
'GMT'
或'UTC'
應該在解析之前附加。有了這些想法,下面應該工作:
function parseSoapDate(dateString) {
var dateParts = dateString.split('.'),
dateParse = dateParts[0],
dateMilli = dateParts[1];
return new Date(
Date.parse(dateParse + ' GMT') +
parseInt(dateMilli, 10)
);
}
var date = parseSoapDate('2010/07/08 04:21:24.477');
對於UTC本地時間,JavaScript的Date
對象應該已經處理,對於你,因爲他們可以報兩個UTC和日期用戶的本地時區。您可以指定要由該方法的名稱(無論它在它UTC
與否):
alert(date.toString()); // local time
alert(date.toUTCString()); // UTC time
這應該工作:
var dateStr = "2010/07/08 04:21:24.477";
var d = new Date(dateStr.split('.')[0]);
d.setUTCHours(0);
它看起來像的日期/時間響應採用ISO格式,這是提供日期信息的明智方式。
假設返回的日期是7-8-2010。這是7月8日還是8月7日?擁有ISO格式(YYYY/MM/DD)的日期解決了這種歧義。
可以將此日期轉換爲以許多不同的方式所需要的格式,即
var input = '2010/07/08 04:21:24.477';
var now = new Date(input.slice(0, input.indexOf('.')));
alert(now.toLocaleString());
您可能希望在互聯網上搜索Date對象還是找片段,讓您使用轉換日期許多不同的格式。
實際上不是,日期不是ISO格式,根據http://www.iso.org/iso/date_and_time_format將會是'2010-07-08T04:21:24.477' – 2011-01-18 16:37:57
我的JSON回報:YYYY-MM-DD HH:MM:SS,本地化將在選定的瀏覽器Date.prototype.toLocaleDataString("en-us"[,option])只工作
function stringToDate(s) {
var language = window.navigator.userLanguage || window.navigator.language;
var options = {year: "numeric", month: "numeric", day: "numeric"};
s = s.split(/[-: ]/);
d = new Date(Date.UTC(s[0], s[1]-1, s[2], s[3], s[4], s[5]));
return d.toLocaleDateString(language , options)+" "+d.toLocaleTimeString();
}
// return
// Friday, November 15, 2013 2:21:04 PM --> FF25
// 11/15/2013 2:21:04 PM --> Chrome31
「2010/07/08 04:21:24.477」 不是一個有效的日期格式。 – Anax 2010-07-09 14:13:11
固定。至少在Chrome上工作。 – 2010-07-09 14:14:54