我知道 JavaScript 不会像 C 或 C++ 那样以 NULL 终止字符串,但我遇到了一个无法解释的情况。
查看以下代码(在 Node.js v0.10.5 中执行):
> new Date('123')
Fri Jan 01 123 00:00:00 GMT+0100 (CET) // UNIX epoch : -58285702800000
> new Date('123\056')
Fri Jan 01 123 00:00:00 GMT+0100 (CET) // UNIX epoch : -58285702800000
> new Date('123\0456')
Tue Jun 01 123 00:00:00 GMT+0200 (CEST) // UNIX epoch : -58272660000000
> new Date('123\0567')
Thu Jul 01 123 00:00:00 GMT+0200 (CEST) // UNIX epoch : -58270068000000
> new Date('123\0999')
Fri Jan 01 123 00:00:00 GMT+0100 (CET) // UNIX epoch : -58285702800000
> new Date('123\0555')
Sat May 01 123 00:00:00 GMT+0200 (CEST) // UNIX epoch : -58275338400000
> new Date('123\0655')
Sat Jan 01 12355 00:00:00 GMT+0100 (CET) // UNIX epoch : 327718911600000
我不确定这里发生了什么,有人可以向我解释一下吗?
有时,NULL 字节后面的整数定义了日期的月份,但月份并不总是对应于后面的数字。
最佳答案
这些是 3 位八进制转义符,而不是空字节。例如 '123\0456'
实际上是 '123%6'
。
关于javascript - 奇怪的 Date() 使用包含 NULL 字节的字符串创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19875406/