%y
указывает на год с двумя цифрами, нам нужно %Y
для года с четырьмя цифрами.
as.Date("20120101", "%Y%m%d")
#[1] "2012-01-01"
Если мы сделаем %y
, он будет совпадать с первыми двумя цифрами 20
как годи с префиксом 20
по умолчанию он добавляет текущую эру, затем месяц соответствует «12» и следующему дню, оставляя последний 01 из
as.Date("20120101", "%y%m%d")
#[1] "2020-12-01"
Это также задокументированов ?strptime
% y Год без столетия (00–99).При вводе значения от 00 до 68 имеют префикс от 20, а от 69 до 99 - от 19 - это поведение, определенное стандартами POSIX 2004 и 2008 годов, но они также говорят: «ожидается, что в будущей версии столетие по умолчанию будет выведено изгод из двух цифр изменится. '
% Y Год с веком.Обратите внимание, что, хотя в первоначальном григорианском календаре не было нуля, ISO 8601: 2004 определяет его как действительный (интерпретируется как 1BC): см. https://en.wikipedia.org/wiki/0_(year). Обратите внимание, что в стандартах также говорится, что годы до 1582 года в его календаре должныиспользоваться с согласия вовлеченных сторон.
Хотя format
не задокументировано в ?as.Date
, он дает ссылку на strptime
для проверки format
формат
символьная строка.Если он не указан, он будет пытаться поочередно по одному форматировать первый элемент, отличный от NA, и выдаст ошибку, если ничего не работает.В противном случае обработка выполняется через strptime.