Поиск…


Вступление

R включает два класса времени - POSIXct и POSIXlt - см. ?DateTimeClasses .

замечания

Ловушки

С помощью POSIXct в полночь будет отображаться только дата и часовой пояс, хотя все время сохраняется.

похожие темы

Специализированные пакеты

  • lubridate

Форматирование и печать объектов даты и времени

# test date-time object
options(digits.secs = 3)
d = as.POSIXct("2016-08-30 14:18:30.58", tz = "UTC")   

format(d,"%S")  # 00-61 Second as integer
## [1] "30"

format(d,"%OS") # 00-60.99… Second as fractional
## [1] "30.579"

format(d,"%M")  # 00-59 Minute
## [1] "18"

format(d,"%H")  # 00-23 Hours
## [1] "14"

format(d,"%I")  # 01-12 Hours
## [1] "02"

format(d,"%p")  # AM/PM Indicator
## [1] "PM"

format(d,"%z")  # Signed offset
## [1] "+0000"

format(d,"%Z")  # Time Zone Abbreviation
## [1] "UTC"

Подробнее о строках формата см. Здесь ?strptime , а также другие форматы.

Разбор строк в объектах с датой

Функции для синтаксического анализа строки в POSIXct и POSIXlt принимают аналогичные параметры и возвращают аналогичный результат, но существуют различия в том, как хранится дата-время; см. «Примечания».

as.POSIXct("11:38",                        # time string
           format = "%H:%M")               # formatting string
## [1] "2016-07-21 11:38:00 CDT"           
strptime("11:38",                          # identical, but makes a POSIXlt object
         format = "%H:%M")
## [1] "2016-07-21 11:38:00 CDT"

as.POSIXct("11 AM",                   
           format = "%I %p")        
## [1] "2016-07-21 11:00:00 CDT"

Обратите внимание, что дата и часовой пояс вменяются.

as.POSIXct("11:38:22",                 # time string without timezone
           format = "%H:%M:%S",   
           tz = "America/New_York")    # set time zone
## [1] "2016-07-21 11:38:22 EDT"

as.POSIXct("2016-07-21 00:00:00",
           format = "%F %T")           # shortcut tokens for "%Y-%m-%d" and "%H:%M:%S"

Подробнее о строках формата смотрите здесь. ?strptime .


Заметки

Отсутствующие элементы

  • Если элемент даты не указан, то используется текущая дата.
  • Если элемент времени не указан, то используется с полуночи, то есть 0 с.
  • Если часовой пояс не указан ни в строке, ни в параметре tz , используется местный часовой пояс.

Часовые пояса

Арифметика по времени

Чтобы добавить / вычесть время, используйте POSIXct, поскольку он хранит время в секундах

## adding/subtracting times - 60 seconds
as.POSIXct("2016-01-01") + 60
# [1] "2016-01-01 00:01:00 AEDT"

## adding 3 hours, 14 minutes, 15 seconds
as.POSIXct("2016-01-01") + ( (3 * 60 * 60) + (14 * 60) + 15)
# [1] "2016-01-01 03:14:15 AEDT"

Более формально, as.difftime можно использовать для указания периодов времени для добавления к дате или объекту datetime. Например:

as.POSIXct("2016-01-01")         + 
  as.difftime(3,  units="hours") +
  as.difftime(14, units="mins")  +
  as.difftime(15, units="secs")
# [1] "2016-01-01 03:14:15 AEDT"

Чтобы найти разницу между датами / временем, используйте difftime() для разницы в секундах, минутах, часах, днях или неделях.

# using POSIXct objects
difftime(
  as.POSIXct("2016-01-01 12:00:00"), 
  as.POSIXct("2016-01-01 11:59:59"), 
  unit = "secs")
# Time difference of 1 secs

Чтобы генерировать последовательности дат-времени, используйте seq.POSIXt() или просто seq .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow