2017-11-06 21 views
0

エポック時間を現地時間に変換したい。あなたがここで見ることができるように、私は異なるタイムゾーンを持っています、そして、私は各行の現地時間を取得したいと思います。どのように各タイムゾーンを考慮してコンバージョンを行うことができますか?エポック時間と現地時間、異なるタイムゾーン

df <- data.frame(Epoch_Time = c(1460230930,1460231830, 1459929664), 
       Time_Zone = c("UTC−12:00", "UTC+10:00", "UTC-9:00")) 

答えて

1

エポックタイムをPOSIXとして保存しておくと、より簡単に操作できます。

library(dplyr) 
library(lubridate) 

df <- tibble(
    time_epoch = as.POSIXct(
    c(1460230930,1460231830, 1459929664), tz = "UTC", origin = "1970-01-01" 
), 
    time_zone = c("UTC-12:00", "UTC+10:00", "UTC-09:00") 
) 

df <- mutate(df, 
      time_zone = as.numeric(substr(time_zone, 4, 6)), 
      time_local = as.character(time_epoch + hours(time_zone)) 
    ) 

df 

# # A tibble: 3 x 3 
#   time_epoch time_zone   time_local 
#    <dttm>  <dbl>    <chr> 
# 1 2016-04-09 21:42:10  -12 2016-04-09 11:42:10 
# 2 2016-04-09 21:57:10  10 2016-04-10 09:57:10 
# 3 2016-04-06 10:01:04  -9 2016-04-06 03:01:04 

注:

  1. 私は十分なだけ、この例で使用する、正しくUTC文字列から変換 を一般化するには努力をしていません。理想的には、 はあなたがオルソンの名前ではなく、オフセットの、あなたはtime_localが文字として保存されているこれらの here

  2. を得ることができますしたい、あなたが複数のタイムゾーンと日付/時刻の列を格納することはできません、彼らは で保存されています単一の値を参照してくださいattributes(df$time_epoch)

    attributes(df$time_epoch) 
    # $class 
    # [1] "POSIXct" "POSIXt" 
    # 
    # $tzone 
    # [1] "UTC" 
    
関連する問題