2009-09-08 8 views

Antwort

11

Zuerst wandeln die Londoner Zeit zu einem POSIXct Objekt:

pb.txt <- "2009-06-03 19:30" 
pb.date <- as.POSIXct(pb.txt, tz="Europe/London") 

Dann format verwenden das Datum in einer anderen Zeitzone zu drucken:

> format(pb.date, tz="America/Los_Angeles",usetz=TRUE) 
[1] "2009-06-03 11:30:00 PDT" 

Es gibt einige Tricks, um den richtigen Zeitpunkt zu finden, Zu verwendende Zonen-ID. Mehr Details in diesem Beitrag auf dem Blog Revolutionen: Converting time zones in R: tips, tricks and pitfalls

+0

Format konvertiert das Posix-Objekt in ein Zeichen. – obesechicken13

+0

Bewirkt diese Umstellung die Anpassung des Tageslichts? –

+0

Ja, es tut das entsprechende Inkrement/Dekrement, wenn sich der Standort in der Zeitzonendatenbank befindet. –

39

Ändern der tzone Attribut eines ‚POSIXct‘ Objekt:

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

Beachten Sie, dass dieses Objekt noch ein POSIXct ist, tzone hat sich verändert, und Offset korrekt hat angewandt worden:

> attributes(pb.date) 
$class 
[1] "POSIXct" "POSIXt" 

$tzone 
[1] "America/Los_Angeles" 
+0

Vergessen Sie nicht, den Link in den Kommentaren der angenommenen Antwort zu überprüfen (http://blog.revolution-computing.com/2009/06/converting-time-zones.html). Ich habe EST benutzt und dachte, dass diese Antwort nicht funktioniert! – kaoD

16

Paket lubridate zwei Funktionen hält Zeitzonen zu konvertieren. Nach den Hilfeseite:


force_tz gibt eine Datum-Zeit, die die gleiche Uhrzeit wie x in der neuen Zeitzone hat.

force_tz(time, tzone = "America/Los_Angeles") 


with_tz ändert die Zeitzone, in der eine sofortige angezeigt wird. Die für den Augenblick angezeigte Uhrzeit ändert sich, aber der beschriebene Zeitpunkt bleibt gleich.

with_tz(time, tzone = "America/Los_Angeles") 
+2

viel sauberer als andere Methoden. –

Verwandte Themen