为什么一串数字的工作方式与新日期中的实际数字不同
Why does a string of numbers work differently than actual numbers in a new Date?
为什么一串数字与新Date()中的实际数字不同:
var myfirstDate = new Date("2013, 10, 15"); //returns Tue Oct 15 2013 00:00:00 GMT-0500 (CDT)
var mysecondDate = new Date(2013, 9, 15); // also returns Tue Oct 15 2013 00:00:00 GMT-0500 (CDT)
myfirstDate.value == mysecondDate.value; //returns true
我看了几个教程,甚至没有提到像上面的 myfirstDate 这样的字符串的想法。javascript 会自动解析字符串吗?
查看文档。
您实际上是在调用两个不同的构造函数。
第一个被解析为人类可读的日期:
new Date(dateString)
第二个需要 3 个或更多参数,提供年份、从 0 开始的月份数和一天
new Date(year, month, day [, hour, minute, second, millisecond]);
年
表示年份的整数值。为了便于兼容(为了避免Y2K问题),应始终完整指定年份;使用 1998,而不是 98。
月
表示月份的整数值,从 0 表示 1 月开始,到 11 表示 12 月。
日
表示月份中的某一天 (1-31) 的整数值。
在 ES5 之前,日期字符串的解析完全依赖于实现,尽管有几个浏览器一致地解析了一两个字符串。ES5 引入了对 ISO8601 版本的解析,但并非所有正在使用的浏览器都支持它。
最好手动解析日期字符串以确保它们正确。有各种库可以帮助解决这个问题,但这并不困难(2 行代码)。
顺便说一下,没有Date.prototype.value方法,所以很可能你正在将undefined与它进行比较。您应该比较时间值,因此:
myfirstDate.getTime() == mysecondDate.getTime();
或只是:
myfirstDate == mysecondDate;
哦,要回答这个问题:当 Date 函数作为具有单个字符串参数的构造函数调用时,它被视为日期字符串并进行分析(见上文)。所以"10"代表十月。
当 Date 作为具有多个参数的构造函数调用时,它们被视为日期值,因此9
被视为 10 月,因为月份参数的索引为零(0=1 月,1=2 月等)。
相关文章:
- 带有非数字/非日期x轴的Dygraph
- 将日期字符串转换为数字以进行比较
- 如何使文本、数字和日期html输入字段以一致的方式支持Ctrl+Z(撤消)
- 如何将返回一串数字的 JSON 属性转换为日期
- javascript/jquery 数字时钟脚本,24 小时格式,带有日期
- jQuery 验证输入文本是否仅接受数字、单词或日期
- 数字、日期和日期的国际化(i18n);货币(JavaScript)
- 为什么 MVC4 验证 js 自动将数字验证添加到日期时间
- 用javascript将日期转换为数字(而不是时间戳)
- 这个javascript日期解析有什么问题?为什么 js 讨厌数字 8
- 如何根据用户区域设置数字和日期的格式
- Javascript:将日期作为数字进行比较
- ng-重复带有数字和日期的多个过滤器
- Dijit DateTextBox - 以 ISO/数字格式设置日期
- 为什么一串数字的工作方式与新日期中的实际数字不同
- 将数字日期转换为文本日期的效率
- 按日期对包含数字(日期)的文本行排序
- 没有时间的过去数字日期
- javascript中的长数字日期格式
- 与Javascript对象交互,其中键为数字日期/时间