1.5 Data e hora

Datas são padronizadas no formato AAAA-MM-DD (ISO-8601), e quando contiverem horário ficam na forma AAAA-MM-DD HH:MM:SS. Este procedimento facilita a programação e organização do material, garantindo que os arquivos nomeados desta forma fiquem ordenados cronologicamente em qualquer sistema.

Exemplo 1.7 O pacote lubridate (Grolemund and Wickham 2011) traz uma série de funções úteis para lidar com elementos temporais.

library(lubridate)
# Apollo 11 pousa na Lua em 20 de julho de 1969 às 20h17min UTC (Coordinated Universal Time)
(apollo11 <- ymd_hms('1969-07-20 20:17:00'))
## [1] "1969-07-20 20:17:00 UTC"
year(apollo11)    # ano
## [1] 1969
month(apollo11)   # mês
## [1] 7
day(apollo11)     # dia
## [1] 20
hour(apollo11)    # hora
## [1] 20
minute(apollo11)  # minuto
## [1] 17
second(apollo11)  # segundo
## [1] 0
wday(apollo11, label = TRUE)  # dia da semana
## [1] Sun
## Levels: Sun < Mon < Tue < Wed < Thu < Fri < Sat
with_tz(apollo11, 'America/Sao_Paulo') # horário de São Paulo/Brasília
## [1] "1969-07-20 17:17:00 -03"
now()-apollo11 # número de dias desde o pouso na Lua até o fechamento deste material
## Time difference of 20259.9 days
apollo11+(20000*24*3600) # data em que se completaram 20 mil dias da missão
## [1] "2024-04-22 20:17:00 UTC"

Exemplo 1.8 Em Python.

from datetime import datetime, timedelta
import pytz

# Apollo 11 pousa na Lua em 20 de julho de 1969 às 20h17min UTC
apollo11 = datetime(1969, 7, 20, 20, 17, 0, tzinfo=pytz.utc)

# Ano
print(apollo11.year)  
## 1969
# Mês
print(apollo11.month)  
## 7
# Dia
print(apollo11.day)  
## 20
# Hora
print(apollo11.hour)  
## 20
# Minuto
print(apollo11.minute)  
## 17
# Segundo
print(apollo11.second)  
## 0
# Dia da semana
print(apollo11.strftime('%A'))  
## Sunday
# Horário de São Paulo/Brasília
sao_paulo_tz = pytz.timezone('America/Sao_Paulo')
apollo11_sp = apollo11.astimezone(sao_paulo_tz)
print(apollo11_sp)  
## 1969-07-20 17:17:00-03:00
# Número de dias desde o pouso na Lua até hoje
now = datetime.now(pytz.utc) 
days_since_landing = (now - apollo11).days
print(days_since_landing) 
## 20259
# Data em que se completam 20 mil dias da missão
future_date = apollo11 + timedelta(days=20000)
print(future_date)
## 2024-04-22 20:17:00+00:00

Referências

Grolemund, Garrett, and Hadley Wickham. 2011. “Dates and Times Made Easy with lubridate.” Journal of Statistical Software 40 (3): 1–25. https://www.jstatsoft.org/v40/i03/.