Recherche…


Introduction

R inclut deux classes date-heure - POSIXct et POSIXlt - voir ?DateTimeClasses .

Remarques

Pièges

Avec POSIXct, minuit affichera uniquement le fuseau horaire et la date, bien que le temps plein soit toujours stocké.

Rubriques connexes

Forfaits spécialisés

  • lubrifier

Formatage et impression d'objets date-heure

# 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"

Voir ?strptime pour plus de détails sur les chaînes de format ici, ainsi que d'autres formats.

Analyse des chaînes en objets date-heure

Les fonctions d'analyse syntaxique d'une chaîne dans POSIXct et POSIXlt prennent des paramètres similaires et renvoient un résultat similaire, mais il existe des différences dans la manière dont cette date-heure est stockée. voir "Remarques".

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"

Notez que la date et le fuseau horaire sont imputés.

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"

Voir ?strptime pour plus de détails sur les chaînes de format ici.


Remarques

Éléments manquants

  • Si un élément de date n'est pas fourni, cela est utilisé à partir de la date actuelle.
  • Si un élément de temps n'est pas fourni, alors celui de minuit est utilisé, c'est-à-dire 0.
  • Si aucun fuseau horaire n'est fourni dans la chaîne ou le paramètre tz , le fuseau horaire local est utilisé.

Fuseaux horaires

Arithmétique date-heure

Pour ajouter / soustraire du temps, utilisez POSIXct, car il stocke les temps en secondes

## 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"

Plus officiellement, as.difftime peut être utilisé pour spécifier des périodes à ajouter à un objet date ou datetime. Par exemple:

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"

Pour trouver la différence entre les dates / heures, utilisez difftime() pour les différences en secondes, minutes, heures, jours ou semaines.

# 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

Pour générer des séquences de date-heure, utilisez seq.POSIXt() ou simplement seq .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow