Как Date.prototype.getUTCFullYear () соответствует 2000 году?

1

От https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear:

Значение, возвращаемое getUTCFullYear() является абсолютным числом, которое соответствует 2000 году, например, 1995.

Что значит быть "совместимым с 2000 годом"?

Теги:
date

3 ответа

0

Фраза "совместимая с 2000 годом" немного вводит в заблуждение и, вероятно, должна быть удалена.

Первоначально ECMAScript был реализован с использованием Java-метода, называемого getYear, который вернул 2-значный год, который был полным годом - 1900, поэтому 1995 был возвращен как 95, 2017 как 117 и 1832 как -68. Этот метод теперь перенесен в приложение ECMA-262 только для веб-браузеров и поддерживается для соображений обратной совместимости, его нельзя использовать в новом коде.

Хотя метод getYear кажется немного странным, он был легко преобразован в полный год, добавив 1900.

Вопрос "Y2K" заключается в том, что после 1 января 2000 года вопрос о 2-значных годах стал проблемой, так как дата 1/1/00 будет интерпретирована как 1/1/1900, когда было запланировано 1/1/2000 (и так далее для любых 2 значный год). Эта проблема сохраняется, поскольку new Date(0,0,1) создает дату для 1/1/1900, а не 1/1/0000.

Это реальный выпуск 2000 года (Y2K), не получающий год.

Чтобы создать дату между -99 и +99, вам нужно установить полный год, например, для 1 января 23 вам нужно сделать:

var d = new Date();
d.setFullYear(23,0,1);

Что касается getFullYear (и getUTCFullYear), он возвращает полный год, который может быть любым годом, который составляет примерно ± 285,616 с 1970 года. Это само по себе не позволяет избежать проблемы с 2000 годом. Но он вернет фактический год:

var d = new Date();
d.setFullYear(23, 0, 1);
console.log(d.getYear());     // -1877
console.log(d.getFullYear()); // 23
0

Я думаю, что "совместимый с 2000 годом" просто означает, что он не вызывает проблем из-за "ошибки Y2K".

Просто это означает, что он возвращает четырехзначное число, а не двузначное число, так что нет никакой двусмысленности между годами в разные столетия.

0
The value returned by getUTCFullYear() is an absolute number that is compliant with year-2000, for example, 1995.

Это предложение означает, что число должно быть положительным, отличным от 0, и оно должно быть написано для inter (соответствует 2000 году, например, 1998, 1999, 000, NO 98,99,00)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню