Я знаю, что JavaScript не NULL завершает строки, такие как 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 определяют месяц даты, но месяц не всегда соответствует следующему номеру.
NULL byte = '\ x00', а не' \ 0'. –
Фактически оба '' test \ 0other'' и '' test \ x00other' дают тот же результат: '' test \ u0000other'', потому что '\ 0',' \ x00' и '\ u0000' на самом деле одинаковое значение , –
'\ x00' всегда является NULL-байтом, независимо от того, что следует, а' \ 0' - это только NULL-байт, за которым не следует никакая цифра. –