2016-04-07 5 views
2

Ich habe ein Datum mit einer Zeitzone definiert, aber wenn ich es mit dem scales Paket date_format ausdruck, gibt es mir die Zeit in UTC, was für meinen Zweck peinlich ist.date_format Zeitzone Strangeness

> library(scales) 
> st <- as.POSIXct("2015-10-31 00:00:00",tz="US/Pacific") 
> st 
[1] "2015-10-31 PDT" 
> fmt <- date_format("%Y-%m-%d %R %Z") 
> fmt(st) 
[1] "2015-10-31 07:00 UTC" 

Interessanter das funktioniert (so POSIXct die Zeitzone zu verstehen scheint) - aber gibt mir nicht genug Kontrolle über das Format:

> format(st,usetz=T) 
[1] "2015-10-31 PDT" 

Diese Unzuverlässigkeit bei der Hilfe für ?date_format angedeutet wird:

Wenn% z oder% Z für die Ausgabe mit einem Objekt mit einer zugewiesenen Zeitzone verwendet wird, wird versucht, die Werte für diese Zeitzone zu verwenden - b ut es ist nicht garantiert, um erfolgreich zu sein.

Also meine Frage ist, wie mache ich machen es gelingt?

Vorschlagen von Workarounds ist in Ordnung und kann upvotes kontaktieren, aber bitte verstehen Sie den Punkt dieser Frage ist, dass ich einen Einblick erhalten möchte, was mit date_format vor sich geht.

+0

Sie sollten * Drei-Buchstaben-Zeitzonen-Akronyme vermeiden, da sie * nicht * standardisiert sind. PDT kann verschiedene Dinge für verschiedene Länder bedeuten. Das * seltsame * Ding ist, dass "st" 'PDT' anstelle von zB' .... 00:00:00 + 07: 00Z' zurückgegeben hat. Die Lokalisierung von R ist nicht sehr konsistent - in diesem Fall verwendete "st" ein benutzerdefiniertes Format, das. Wenn Sie Daten in einem * spezifischen * Format anzeigen möchten, definieren Sie sie explizit in Ihrer Formatzeichenfolge. Was ist in diesem Fall das genaue Format, das Sie zurückgeben möchten? –

+0

Vermeiden Sie die Zeitzonen mit drei Buchstaben? Ich habe sie nicht verwendet, "date_format" und "format". Wie das Beispiel zeigt. –

+0

Welches Format möchten Sie zurückgeben? –

Antwort

3

Die Definition von date_format ist sehr kurz:

function (format = "%Y-%m-%d", tz = "UTC") 
{ 
    function(x) format(x, format, tz = tz) 
} 

Es sollte klar sein, warum die Zeitzone geändert wird, wenn Sie den Standard nicht ändern.

+0

Ok, sollte das selbst gefunden haben. Immer noch verwirrend. –

+0

Skalen enthält hauptsächlich Komfortfunktionen zum Plotten (insbesondere zur Verwendung in ggplot2). – Roland

+0

Nicht sicher, warum 'date_format' die Zeitzone überschreibt. Scheint etwas von seiner Bequemlichkeit dann negieren. –

Verwandte Themen