Дата «0» может быть неоднозначной:
- Время POSIX (так называемое время эпохи, время Unix, ref: https://en.wikipedia.org/wiki/Unix_time) определяет время / дату «0» в "00:00:00 UTC 1 января 1970 года" ;
- Дата Excel 0 определена как
1/0/1900
(что кажется странным); аналогично время 0 равно 1/0/1900 12:00:00 AM
- другие общественные / религиозные организации могут предпочесть другие ссылки (например, Ислам может быть «началом 7-го века нашей эры» , wiki ref ; христианство может предпочесть год 0 CE;нет предвзятости, не пламенные войны, пожалуйста)
В R, если вы определили что-то класса POSIXt
или Date
, то преобразование его обратно в число с as.numeric
будет следовать за POSIX /соглашение об эпохе, означающее, что
as.numeric(as.Date("1969-01-01"))
# [1] -365
Но оно никогда не предполагает эпоху при неоднозначной записи даты / времени, поэтому вы должны указать ее с помощью origin=
. (Обратите внимание, что я не долженукажите источник в предыдущей команде, поскольку "1969-01-01"
является не числовым и имеет однозначный формат даты, который as.Date
может легко ввестиerpret;as.Date("1969")
не работает, возможно, потому что это может быть любая дата в течение 1969 года.)
Поэтому, чтобы быть однозначным, я предлагаю вам использовать
as.Date(0, origin="1970-01-01")
as.POSIXct(0, origin="1970-01-01") # assumes 00:00:00 UTC
as.POSIXct(0, origin="1970-01-01 00:00:00")