出于某种原因,我的一个WebService的SOAP响应如下所示:
2010/07/08 04:21:24.477
日期格式为YYYY/MM/DD
且时间为格林威治标准时间。
我不确定如何将其转换为本地时间因为格式太奇怪了。
答案 0 :(得分:1)
Date.parse
实际上应该将大部分日期字符串解析为各自的时间戳。
这两个警告似乎是:
'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
答案 1 :(得分:0)
这应该有效:
var dateStr = "2010/07/08 04:21:24.477";
var d = new Date(dateStr.split('.')[0]);
d.setUTCHours(0);
答案 2 :(得分:0)
我的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
答案 3 :(得分:-1)
看起来日期/时间的响应是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());
您可能希望在Internet上搜索Date对象或查找允许您使用多种不同格式转换日期的代码段。