您好我使用以下代码段将字符串转换为日期对象
var date = new Date("18/01/2011");
日期结果为
Fri Jun 1 00:00:00 UTC+0530 2012
我期望日期的结果为
Tue Jan 18 00:00:00 UTC+0530 2011
如何使用以dd / MM / yyyy格式提供的字符串
来实现此目的答案 0 :(得分:1)
字符串"18/01/2011"
未记录在Date
构造函数接受的表单中。实际上,在ES5之前, 没有该字符串的文档形式。 ES5添加了伪ISO-8601格式。 (“伪”,因为,奇怪的是,它处理与ISO-8601不同的时区 。)
但实际上,所有浏览器都支持这些格式:
yyyy/mm/dd mm/dd/yyyy (U.S. format, even on -- say -- UK locale machines)
...当然,当使用未记录的东西时,这是一个风险,你需要仔细测试你的目标引擎。 (特别是mm/dd/yyyy
在非美国语言环境中实施时似乎令人惊讶。)
因此,一种选择是重新格式化字符串以适应其中一种。
我首选的选项是自己解析字符串并使用Date(year, month, day)
构造函数。记住从月份中减去一个,因为几个月从0开始。您的格式很容易解析:
var parts = theString.split("/");
var date = new Date(parseInt(parts[2], 10), // year
parseInt(parts[1], 10) - 1, // month
parseInt(parts[0], 10)); // day
最后:有些库可以帮助解决这些问题,例如MomentJS。
答案 1 :(得分:0)
JavaScript日期的默认格式如下:month / day / year
但如果您无权更改格式,可以这样做:
var datestr = "18/01/2011";
var dateArr =datestr.split("/");
var date = new Date(dateArr[1] + "/" + dateArr[0] + "/" + dateArr[2]);
Date类构造函数的另一个重载只是将整数作为参数传递,其签名如下:
new Date(year, month [, day, hour, minute, second, millisecond]);
所以另一个更合理的方法是:
var datestr = "18/01/2011";
var dateArr =datestr.split("/");
var date = new Date(parseInt(dateArr[2]), parseInt(dateArr[1]), parseInt(dateArr[0]));
如果需要,您还可以向其添加hour, minute, second, millisecond
。
它是最好的参考资料之一,它拥有您在JavaScript中处理日期所需的一切:
答案 2 :(得分:-1)
引号内的属性是错误的:
new Date();
新日期(价值);
new Date(dateString);
新日期(年,月[,日,小时,分钟,秒,毫秒]);
请结帐http://devdocs.io/javascript/global_objects/date或首先搜索StackOverflow