Простейший способ извлечения даты из метки времени

#r #datetime #lubridate

#r #дата-время #lubridate

Вопрос:

Рассмотрим следующую временную метку

 timestamp <- ymd_hms("2011-08-10 14:00:00", tz = "Pacific/Auckland")

> timestamp
[1] "2011-08-10 14:00:00 NZST"
  

Какой самый простой способ получить из нее часть дня 2011-08-10 и убедиться, что этот день является правильной датой, а не строкой?

Использование lubridate::day(timestamp) здесь, очевидно, терпит неудачу.

Комментарии:

1. Просто сделайте as.Date

2. Я думаю, вы ищете lubridate::date . Отличие от as.Date заключается в том, что date используется дата в том виде, в каком она существует в назначенном часовом поясе, вместо того, чтобы сначала преобразовывать в UTC (используется по умолчанию в as.Date , хотя может принимать tz параметр).

3. floor_date(timestamp,"day") выдает POSIXct с правильным часовым поясом…

4. Я думаю, вы также можете использовать lubridate и as_date now вместо as_datetime mutate(day=as_datetime(timestamp)) , и это будет работать в канале

Ответ №1:

Вероятно, это был бы самый простой способ:

 date(timestamp)
  

Он вернет класс date, а не строку.

Ответ №2:

Используйте дату вместо дня

 lubridate::date(timestamp)
  

Ответ №3:

Теперь также есть функция data.table s as.IDate() :

 timestamp <- "2011-08-10 14:00:00"
data.table::as.IDate(timestamp)