如何从javascript中的字符串创建日期对象

IT技术 javascript string date
2021-01-28 23:40:46

有了这个字符串30/11/2011我想将其转换为日期对象。

我是否需要使用:

Date d = new Date(2011,11,30);   /* months 1..12? */

或者

Date d = new Date(2011,10,30);   /* months 0..11? */

?

6个回答
var d = new Date(2011,10,30);

因为月份在 js 中从 0 开始索引。

我认为应该是 var d = new Date(2011,10,30);
2021-03-18 23:40:46
令人惊讶的是,有人在大约 1.5 年之后注意到了这一点,并在之后的 24,000 多次观看中注意到了这一点。
2021-03-21 23:40:46
它也可以直接选择日期,作为单个字符串 const date = new Date("2018-05-09")
2021-04-04 23:40:46
或者我们可以使用 new Date(2011,11,0)
2021-04-11 23:40:46

您肯定想使用第二个表达式,因为 JS 中的月份是从 0 开始枚举的。

您也可以使用 Date.parse 方法,但它使用不同的日期格式:

var timestamp = Date.parse("11/30/2011");
var dateObject = new Date(timestamp);
还要注意Date.parse()返回一个 number,特别是自 1970 年以来的 ms。而 Dogbert 的回答将返回一个 JS Date 对象,从__proto__. jsFiddle 中的演示
2021-03-21 23:40:46
使用 parse 方法时要注意时区问题。
2021-03-22 23:40:46
根据官方文档:注意:由于浏览器的差异和不一致,强烈建议不要使用 Date 构造函数(和 Date.parse,它们是等效的)解析日期字符串。避免通过解析字符串来创建 Date 对象。相反,构建您自己的函数,从您拥有的字符串中理解年、月和日,然后通过将不同的数字传递给构造函数来创建日期
2021-03-30 23:40:46
如果解析的日期碰巧无效(例如 2 月 30 日),请注意 Javascript 默默地返回与解析的日期完全不同的日期。
2021-04-03 23:40:46
这将返回一个数字,而不是日期。
2021-04-12 23:40:46

语法如下:

new Date(year, month [, day, hour, minute, second, millisecond ])

所以

Date d = new Date(2011,10,30);

是正确的; 天、小时、分钟、秒、毫秒是可选的。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

实际上,根据链接,day 也是可选的。它默认为每月的第一天。
2021-04-07 23:40:46

如上所述,有多种创建日期的方法。我不会重复同样的事情。这是在 Java Script 中将 String 转换为 Date 的小方法,如果这是您要找的,

function compareDate(str1){
// str1 format should be dd/mm/yyyy. Separator can be anything e.g. / or -. It wont effect
var dt1   = parseInt(str1.substring(0,2));
var mon1  = parseInt(str1.substring(3,5));
var yr1   = parseInt(str1.substring(6,10));
var date1 = new Date(yr1, mon1-1, dt1);
return date1;
}
这实际上正确地回答了这个问题。“来自字符串的日期对象”。感谢您的回答。
2021-03-20 23:40:46
当我偶然发现执行此操作的要求并了解到月份从 0 开始索引时,我考虑了几种更改月份值的方法。我向下滚动了一些,发现了这个 :-) 谢谢!
2021-03-26 23:40:46
对我来说,这也是最好的答案。
2021-04-09 23:40:46
这真的很有用,应该是最佳答案,因为它实际上根据您的日期字符串格式(并且没有任何时区问题的风险)以适应性强的方式回答了问题。
2021-04-12 23:40:46

很简单的:

var dt=new Date("2011/11/30");

日期应采用 ISO 格式 yyyy/MM/dd。

据我所知,官方的 ISO8601 格式是 yyyy-MM-dd ( en.wikipedia.org/wiki/ISO_8601 )
2021-03-15 23:40:46
是的,它通过执行 new Date("2019-12-21 07:25:00") 起作用
2021-03-17 23:40:46
@gardelin - 谢谢
2021-03-18 23:40:46
@ValterEkholm 在 chrome 和 ff 中工作正常,但在 safari 中不行
2021-03-21 23:40:46