Jeśli mam taką datę w Londynie: "2009-06-03 19:30", w jaki sposób mogę ją przekonwertować na odpowiednik czasu na zachodnim wybrzeżu USA?Jak konwertujesz daty/czasy z jednej strefy czasowej na drugą w R?
Odpowiedz
Najpierw przekonwertować czasu londyńskiego do POSIXct
obiektu:
pb.txt <- "2009-06-03 19:30"
pb.date <- as.POSIXct(pb.txt, tz="Europe/London")
Następnie użyj format
wydrukować datę w innej strefie czasowej:
> format(pb.date, tz="America/Los_Angeles",usetz=TRUE)
[1] "2009-06-03 11:30:00 PDT"
istnieją pewne sztuczki do znalezienia odpowiedniego czasu identyfikator strefy do użycia. Więcej szczegółów w tym poście na blogu Revolutions: Converting time zones in R: tips, tricks and pitfalls
Format zamieni obiekt posix na znak. – obesechicken13
Czy ta konwersja uwzględnia korekty oszczędności światła dziennego? –
Tak, robi to odpowiedni przyrost/dekrement, jeśli lokalizacja znajduje się w bazie danych strefy czasowej. –
zmienić atrybut tzone od obiektu „POSIXct”:
> pb.txt <- "2009-06-03 19:30"
> pb.date <- as.POSIXct(pb.txt, tz="Europe/London")
> attributes(pb.date)$tzone <- "America/Los_Angeles"
> pb.date
[1] "2009-06-03 11:30:00 PDT"
Należy pamiętać, że jest to nadal obiekt POSIXct, tzone uległa zmianie, i prawidłowe przesunięcie ma zastosowano:
> attributes(pb.date)
$class
[1] "POSIXct" "POSIXt"
$tzone
[1] "America/Los_Angeles"
Nie zapomnij sprawdzić linku zamieszczonego w komentarzach zaakceptowanej odpowiedzi (http://blog.revolution-computing.com/2009/06/converting-time-zones.html). Użyłem EST i pomyślałem, że ta odpowiedź nie działa! – kaoD
Pakiet lubridate
posiada dwie funkcje do konwersji stref czasowych. Według stron pomocy:
force_tz
zwraca Date-Time, który ma ten sam zegar jak x
w nowej strefie czasowej.
force_tz(time, tzone = "America/Los_Angeles")
with_tz
zmienia strefę czasową, w której jest wyświetlany natychmiast. Wyświetlany jest czas zegarowy dla natychmiastowych zmian, ale opisany moment pozostaje taki sam.
o wiele czystsze niż inne metody. –
Powiązane: [Zmień strefę czasową w obiekcie POSIXct] (http://stackoverflow.com/q/14141537/271616). –