转换“;长形“;datetime字符串转换为javascript日期对象
Converting "long form" datetime string into javascript date object
我有一个当前时间的Web服务,它返回一个类似的JSON对象
{
"tz": "America'/Chicago",
"hour": 15,
"datetime": "Mon, 01 Apr 2013 15:46:58 -0500",
"second": 58,
"error": false,
"minute": 46
}
有没有一种简单的方法可以转换长格式的日期时间字符串
"datetime": "Mon, 01 Apr 2013 15:46:58 -0500"
转换为javascript Date对象?(除了使用regex解析字符串之外(
var dt= "Mon, 01 Apr 2013 15:46:58 -050";
var date = new Date(dt);
alert(date.getDay());
var dat = {
"tz": "America'/Chicago",
"hour": 15,
"datetime": "Mon, 01 Apr 2013 15:46:58 -0500",
"second": 58,
"error": false,
"minute": 46
};
var dateObj = new Date(dat.datetime);
Mozilla开发者网络可能会向您展示一些更有用的信息。Date构造函数将为您解析字符串。
解析日期字符串的唯一安全方法是自己完成。ES5为Date.parse定义了一个基于ISO8601的标准字符串,但并不是所有使用中的浏览器都支持它,而且您的字符串与该格式不一致。
其他字符串值"适用于"有限的一组浏览器,但对于web应用程序来说,这不是一个可靠的策略。
分析日期字符串相当简单:拆分位,从这些部分创建一个日期对象,并在需要时应用偏移量。因此,如果你的字符串是2013年4月1日星期一15:46:58-0500,你可以使用这样的函数:
function parseDateString(s) {
var months = {jan:0,feb:1,mar:2,apr:3,may:4,jun:5,
jul:6,aug:7,sep:8,oct:9,nov:10,dec:11};
s = s.split(/['s:]/);
var d = new Date(s[3], months[s[2].toLowerCase()], s[1], s[4], s[5], s[6]);
var sign = s[7]<0? 1 : -1;
var l = s[7].length;
// offsetMinutes is minutes to add to time to get UTC
var offsetMinutes = sign * s[7].substring(l-2,l) + sign * s[7].substring(l-4,l-2) * 60;
// Add offset and subtract offset of current timezone
d.setMinutes(d.getMinutes() + offsetMinutes - d.getTimezoneOffset());
return d;
}
var s = 'Mon, 01 Apr 2013 15:46:58 -0500'
alert(s + ''n' + parseDateString(s)); // Mon, 01 Apr 2013 15:46:58 -0500
// Tue Apr 02 2013 06:46:58 GMT+1000
这可能被否决,但您可能需要考虑使用momentjs进行日期/时间操作。这是一个不错的图书馆。
var myDate = moment(myObj.datetime);
现在myDate
是一个JavaScriptDate对象。
/*您可以在需要时将日期字符串重写为更常见的格式-获取月份和时区是大部分工作:*/
function rewriteDate(str){
var months= ['jan', 'feb', 'mar', 'apr', 'may', 'jun',
'jul', 'aug', 'sep', 'oct', 'nov', 'dec'],
dA= str.toLowerCase().split(' '),
m= months.indexOf(dA[2].substring(0, 3));
++m;
if(m<10) m= '0'+m;
dA[2]= m;
var dmy= dA.slice(1, 4).reverse().join('-');
var t= 'T'+dA[4], L= dA[5].length-2,
z= dA[5].substring(0, L)+':'+dA[5].substring(L);
return dmy+t+z;
}
var jsn={
"datetime":"Mon, 01 Apr 2013 15:46:58 -0500"
};
jsn["datetime"]= rewriteDate(jsn.datetime);
//returns: (string) "2013-04-01T15:46:58-05:00"
alert(new Date(jsn.datetime).toUTCString());
// returns: (Date) Mon, 01 Apr 2013 20:46:58 GMT
相关文章:
- 转换日期时间格式
- 在JavaScript中转换日期/时间格式
- 如何在角度引导日期选择器中转换日期格式
- 如何在 jQuery 中转换日期格式
- 如何在JavaScript中转换日期类型
- 转换日期时出现错误结果
- 用javascript转换日期
- EXTJS 3 API转换日期时间
- 转换日期MongoDB/Javascript,但Nan
- 如何/在哪里从redux应用程序中的服务器转换日期
- 如何在自由标记模板或javascript中以特定格式转换日期
- 从数据库转换日期格式
- 在javascript中转换日期格式
- 在 Javascript 中转换日期格式并计算两个日期之间的差异
- 时刻JS未正确转换日期
- 转换日期,以便可以将 jquery 日历值设置为日期
- 如何使用没有过滤器的 Angular JS 转换日期格式
- 使用jQuery或javascript转换日期格式(不使用任何lib)
- 我的javascript中的错误在哪里?转换日期格式
- 转换日期&PST时区到UTC的时间