6

タイムスタンプとタイムゾーンの指定を含むファイルを読み込んでいます。このファイルの特定のタイムゾーンが R によって認識されているかどうかを検出し、認識されていない場合に備えて独自のデフォルトを提供できるようにしたいと考えています。

ただし、無効なタイムゾーンが指定された場合、 as.POSIXct はサイレントに UTC にフォールバックするように見えます。エラーや警告は発生せず、キャッチして処理できます。

> as.POSIXct("1970-01-01", tz="blah")
[1] "1970-01-01 UTC"

Rで特定のタイムゾーンが認識されているかどうかを確認する「適切な」方法は何ですか?

4

4 に答える 4

4

help("time zones")タイムゾーンに関する多くの問題を詳細に説明しており、読む価値があります。

結果は OS によって異なりますが、OS にexample("time zones")zone.tab ファイルがある場合にそのファイルを読み取る方法を示します。

tzfile <- "/usr/share/zoneinfo/zone.tab"
tzones <- read.delim(tzfile, row.names = NULL, header = FALSE,
                     col.names = c("country", "coords", "name", "comments"),
                     as.is = TRUE, fill = TRUE, comment.char = "#")
str(tzones$name)
#chr [1:415] "Europe/Andorra" "Asia/Dubai" "Asia/Kabul" "America/Antigua" "America/Anguilla" ...

NROW(tzones)
#[1] 415

head(tzones)
#  country      coords             name comments
#1      AD +4230+00131   Europe/Andorra         
#2      AE +2518+05518       Asia/Dubai         
#3      AF +3431+06912       Asia/Kabul         
#4      AG +1703-06148  America/Antigua         
#5      AI +1812-06304 America/Anguilla         
#6      AL +4120+01950    Europe/Tirane   
于 2013-06-27T19:12:05.923 に答える
1

RmetricsパッケージtimeDatepackage を使用してタイムゾーンを確認することもできます。

require(timeDate)

timeDate("1970-01-01", zone = "Africa/Dakar")
## [1] [1970-01-01]

timeDate("1970-01-01", zone = "blah")
## Error in .formatFinCenterNum(unclass(ct), zone, type = "any2gmt") : 
##  'blah' is not a valid FinCenter.
于 2013-06-27T14:34:16.387 に答える