Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从包含AM/PM的日期字符串创建日期对象?_Javascript_Date - Fatal编程技术网

Javascript 如何从包含AM/PM的日期字符串创建日期对象?

Javascript 如何从包含AM/PM的日期字符串创建日期对象?,javascript,date,Javascript,Date,有没有办法用AM/PM值定义javascript日期对象 像这样的 var startDate = new Date("1900-1-1 8:20:00 PM"); 这项工作: new Date( '1 Jan 1900 8:20:00 PM' ) 相当于 new Date( '1 Jan 1900 20:20:00' ) 现场演示:您可以使用Date.parse var startDate = new Date(Date.parse("1900-1-1 8:20:00 PM")); 这

有没有办法用AM/PM值定义javascript日期对象

像这样的

var startDate = new Date("1900-1-1 8:20:00 PM");
这项工作:

new Date( '1 Jan 1900 8:20:00 PM' )
相当于

new Date( '1 Jan 1900 20:20:00' )
现场演示:

您可以使用Date.parse

var startDate = new Date(Date.parse("1900-1-1 8:20:00 PM"));

这取决于浏览器和/或区域设置。但是我发现了一个脚本可以提供帮助:

不能保证Date.parse()方法,因此新的Date()构造函数可以解析任何特定的日期格式。根据ECMAScript标准,只需要处理特定的ISO 8601格式和一些依赖于实现的格式

因此,至少为了可移植性,您需要使用其他工具,例如库;使用它,你会使用

Globalize.parseDate('1900-1-1 8:20:00 PM','yyyy-M-d h:mm:ss tt')
当第一个参数与第二个参数指定的格式匹配时,返回一个日期对象


如果需要在输入时处理其他日期格式,可能需要编写代码,尝试使用特定格式读取数据,直到得到非空结果。

@pablochan I get“invalid date”…@pablochan no,当我尝试调用startDate.getHours()时,它不会返回正确的值,它返回NaN,当我这样定义日期时,var startTime=新日期(1900,1,1,8,20,0);调用getHours()正确返回8:(@Bakudan-аааааааааааааааааааааааааааааа107rings.@ŠimeVidas,但在不同浏览器中并不一致,Date.parse也不是更好。@RobG根据我的理解,
new Date
Date.parse
等价地处理日期字符串。因此
new Date(Date.parse(…)
是一种反模式(类似于
new String(String(…)
).这就是我在评论中指出的…我试图指出的一点是,浏览器不会一致地解析日期字符串。我测试过的浏览器中没有一个是根据ES5第15.9.1.15节解析日期的(我没有进行详尽的测试)。因此,一些常见的浏览器碰巧解析特定的(非标准的)格式一致性不应被接受为所有浏览器现在或将来都会这样做的证据。@RobG我理解。我在回复你评论的第二部分,你说Date.parse“不会更好”.
newdate
Date.parse
以完全相同的方式解析日期字符串,因此其中一个显然不能比另一个更好。