2016-06-19 46 views
-2

ここで間違っていますか? R日時にRFC3999の日付をRのDateTime形式に変換する

RFC3999:RFC3999に

as.Date("2014-06-18T15:00:00.000000Z",format="%Y-%m-%dT%H:%M:%S") 
#expected: 2014-06-18 15:00:00 

日時:

as.Date("2013-07-16",format="%Y-%m-%dT%H:%M:%S") 
#expected: 2013-07-16T00:00:00.000000Z 
+0

「日付」はdatetime形式ではなく、日付形式です。 'as.POSIXct'または' strptime'を使います。 2番目の場合は、そこにない部分の書式設定の引数を与えないでください。そうしないと、 'NA'が返されます。 – alistaire

答えて

1

as.Dateのみ Dateクラスではなく、日時一つDateクラスに強制変換します。ベースRには2つのdatetimeクラスPOSIXctとPOSIXltがあります。プライムの違いは、POSIXctの起点から1秒間で、POSIXltのリストとしてデータを内部的に格納する方法にあります。 Hadley WickhamがPOSIXキャンプにしっかりと入っていることに気づくことはほとんどありませんが、ほとんどの場合、彼らはどちらもうまくいきます。したがって、彼のパッケージのtbl構造がよりうまく動作します。

が実際にこの情報を使用するには、最初は単に秒間

# for POSIXct 
as.POSIXct("2014-06-18T15:00:00.000000Z", format = "%Y-%m-%dT%H:%M:%S") 
# [1] "2014-06-18 15:00:00 EDT" 

# for POSIXlt 
strptime("2014-06-18T15:00:00.000000Z", format = "%Y-%m-%dT%H:%M:%S") 
# [1] "2014-06-18 15:00:00 EDT" 

になり、あなたが解析する部分を持っているよりも、あなたは多くの解析トークンを渡すことができない、またはあなたがNAを取得します。

# if you want a Date 
as.Date("2013-07-16",format="%Y-%m-%d") 
# [1] "2013-07-16" 

# if you want POSIXct (note default printing is simplified, but HMS are stored as zeros) 
as.POSIXct("2013-07-16",format="%Y-%m-%d") 
# [1] "2013-07-16 EDT" 

# if you want POSIXlt (same printing behavior) 
strptime("2013-07-16",format="%Y-%m-%d") 
# [1] "2013-07-16 EDT" 
関連する問題