Sim*_*imo 28 javascript timestamp date
我有一个表示当前时间的字符串:2015-11-24T19:40:00.如何在Javascript中解析此字符串以将此字符串表示的日期作为LOCAL TIME? 由于一些限制,我不能使用库moment,但允许使用jquery.我知道之前有人问过这个问题,但答案是用的moment
例如,如果我在加利福尼亚运行脚本,那么这个字符串将代表7PM太平洋时间,但如果我在纽约运行该脚本,那么这个字符串将代表东部时间?
我试过以下但Chrome和Firefox给了我不同的结果:
var str = "2015-11-24T19:40:00";
var date = new Date(str);
Run Code Online (Sandbox Code Playgroud)
Chrome将其用作UTC时间(Tue Nov 24 2015 11:40:00 GMT-0800 (Pacific Standard Time)),
但Firefox消耗它作为我当地的太平洋时间(Tue Nov 24 2015 19:40:00 GMT-0800 (Pacific Standard Time))
我尝试添加"Z" str,就像这样var date = new Date(str+"Z");,然后两个浏览器都给我UTC时间.是否有任何类似的信件"Z"告诉所有浏览器(至少chrome,Firefox和Safari)将字符串解析为本地时区?
Rob*_*obG 39
强烈建议使用Date构造函数或Date.parse(基本上是相同的东西)解析日期字符串.
如果将Date作为函数调用并传递没有时区的ISO 8601格式日期字符串(例如2015-11-24T19:40:00),则可能会得到以下结果之一:
Date对象具有UTC的时间值和基于系统设置的偏移量.当您发送日期输出时,您看到的通常是Date.prototype.toString的结果,它是一个依赖于实现的人类可读字符串,表示日期和时间,通常在基于系统设置的时区中.
解析日期字符串的最佳方法是手动执行.如果您确信格式是一致且有效的,那么将ISO格式字符串解析为本地日期就像下面这样简单:
/* @param {string} s - an ISO 8001 format date and time string
** with all components, e.g. 2015-11-24T19:40:00
** @returns {Date} - Date instance from parsing the string. May be NaN.
*/
function parseISOLocal(s) {
var b = s.split(/\D/);
return new Date(b[0], b[1]-1, b[2], b[3], b[4], b[5]);
}
document.write(parseISOLocal('2015-11-24T19:40:00'));Run Code Online (Sandbox Code Playgroud)
请注意,使用Date.parse解析ISO字符串只接受UTC,它不接受任何其他时区指定(如果缺少上述行为,请注意).
RobG出色回答的变体。
请注意,这将需要运行最先进的JavaScript,因为它依赖于箭头符号和散布运算符。
function parseDateISOString(s) {
let ds = s.split(/\D/).map(s => parseInt(s));
ds[1] = ds[1] - 1; // adjust month
return new Date(...ds);
}
Run Code Online (Sandbox Code Playgroud)
这种方法的好处是它会自动应用正确数量的参数传递。如果这是您想要的。
| 归档时间: |
|
| 查看次数: |
19401 次 |
| 最近记录: |