По-видимому, в Windows 10 версии 1511 есть ошибка Powershell.
Ни один из исправлений, перечисленных здесь, не работал для меня. (или работал только временно)
Я исправил его (как в VS2013, так и VS2015), установив версию 1607. Его можно скачать здесь: Обновление для Windows 10 Anniversary .
Проблема с Nuget: https://github.com/NuGet/Home/issues/3352
Сначала переведите лондонское время в объект POSIXct
:
pb.txt <- "2009-06-03 19:30"
pb.date <- as.POSIXct(pb.txt, tz="Europe/London")
Затем используйте format
для печати даты в другом часовом поясе:
> format(pb.date, tz="America/Los_Angeles",usetz=TRUE)
[1] "2009-06-03 11:30:00 PDT"
Есть несколько способов найти правильный идентификатор часового пояса для использования. Подробнее в этом сообщении в блоге Revolutions: Преобразование часовых поясов в R: советы, трюки и ловушки
Измените атрибут tzone объекта «POSIXct»:
> 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"
Обратите внимание, что это все еще объект POSIXct, tzone изменился, и было применено правильное смещение:
> attributes(pb.date)
$class
[1] "POSIXct" "POSIXt"
$tzone
[1] "America/Los_Angeles"
Если вы хотите сделать это в одной строке, напомните, что любой объект POSIXct
в R - это просто число (секунды UTC с начала эпохи) и что «часовой пояс» - это просто атрибут, который определяет, как это число напечатано .
Поэтому мы можем использовать structure
следующим образом:
x = as.POSIXct("2009-06-03 19:30", tz = "Europe/London")
structure(as.integer(x), class = class(x), tzone = 'America/Los_Angeles')
# [1] "2009-06-03 11:30:00 PDT"
as.integer
разделяет класс и атрибуты x
и structure
позволяет нам перестроить / настроить их. class(x)
является сокращением для c('POSIXct', 'POSIXt')
; если ваш объект имеет миллисекунды, и вы хотите отслеживать их, вы можете использовать as.numeric(x)
.
Пакет lubridate
содержит две функции для преобразования часовых поясов. Согласно страницам справки:
force_tz
возвращает дату-время с тем же самым часовым временем, что и x
в новом часовом поясе.
force_tz(time, tzone = "America/Los_Angeles")
with_tz
изменяет часовой пояс, в котором отображается момент. Время, отображаемое для мгновенных изменений, но момент времени, описанный, остается неизменным.
with_tz(time, tzone = "America/Los_Angeles")