Если вам нужен sdk 23, добавьте это в свою граду:
android {
useLibrary 'org.apache.http.legacy'
}
Почему бы не настроить часовой пояс на GMT для ваших сеансов R, тогда? Если что-то преобразуется в «текущий» часовой пояс, он по-прежнему прав.
Это поведение задокументировано в ?c.POSIXct
(та же справочная страница, что и ?DateTimeClasses
), ?c
и ?unlist
:
Из ?c.POSIXct
:
Используя
blockquote>c
на объектах «POSIXlt
», они преобразуют их в текущий часовой пояс, а на «POSIXct
» объекты опускают любые атрибутыtzone
»(даже если все они отмечены тем же часовым поясом) . *Из
?c
:< / blockquote>
c
иногда используется для его побочного эффекта удаления атрибутов, кроме имен. *
Тем не менее, мое тестирование показывает, что целостность ваших данных остается неизменной, несмотря на использование
c
илиunlist
. Например:x <- structure(1317830532, class = c("POSIXct", "POSIXt"), tzone = "GMT") y <- structure(1317830532+3600, class = c("POSIXct", "POSIXt"), tzone = "PST8PDT") x [1] "2011-10-05 16:02:12 GMT" y [1] "2011-10-05 10:02:12 PDT" strftime(c(x, y), format="%Y/%m/%d %H:%M:%S", tz="GMT") [1] "2011/10/05 16:02:12" "2011/10/05 17:02:12" strftime(c(x, y), format="%Y/%m/%d %H:%M:%S", tz="PST8PDT") [1] "2011/10/05 09:02:12" "2011/10/05 10:02:12" strftime(unlist(y), format="%Y/%m/%d %H:%M:%S", tz="PST8PDT") [1] "2011/10/05 10:02:12"
Ваш Марсовод должен быть в порядке, если вы используете R для отслеживания дат.
x-floor_date(x,'day')
), и если временные зоны молча удалены, эти числа ошибочны.
– Ken Williams
5 October 2011 в 20:35
strftime(unlist(list(y)), format="%Y/%m/%d %H:%M:%S", tz="PST8PDT")
Ошибка в as.POSIXlt.numeric (x, tz = tz): «источник» должен быть поставлен
– Ken Williams
5 October 2011 в 20:41
c()
, я бы сделал код более явным.
– Ken Williams
5 October 2011 в 20:44
c
преобразует время в локальное время. Да, он удаляет оригинал tz
, но фактическое время остается неизменным. Случается, что неявное преобразование в локальное время происходит в ваших последующих вычислениях. Я вижу, как это приведет к проблеме бухгалтерского учета, если вы позже захотите узнать, что такое местное время, и у вас больше нет записи о tz. Извините, но не могу придумать, как легко это исправить.
– Andrie
6 October 2011 в 15:08
c
удаляет любой атрибут часового пояса, а затем различные другие функции будут выбирать часовой пояс по умолчанию на основе моей среды. Точка относительно GMT остается неизменной, но время дня меняется.
– Ken Williams
7 November 2011 в 17:42
Учитывая, что это задокументированное поведение, и нужно либо избегать таких функций, либо защищать его таким образом, чтобы защитить любой подход. Для таких вещей я бы рекомендовал написать «бедный человек»; с таким детектором lint, вы можете пойти о восстановлении здравомыслия. Кроме того, для обнаружения ворса существует несколько подходов к предотвращению сбоев в полярных орбитах Марса, некоторые из них независимы друг от друга, другие зависят:
find
и grep
или каким-либо другим способом (например, grep
в R), чтобы найти те конкретные функции, которые вызывают проблемы. Когда обнаружено, удалите или используйте защитный метод кодирования (например, обертка в # 1). Runit
или testthat
, разработайте тесты, которые гарантируют сохранение свойств часового пояса при использовании ваших функций или пакета. Каждый раз, когда появляется новая ошибка, создайте новый тест, чтобы убедиться, что ошибка не появляется снова в выпущенных версиях. Я делаю все # 1-4 для других вопросов, но, так же, как они легко адаптируются к проверке часового пояса, они довольно многократно используются для многих задач Орбита Марса. Я делаю именно это, чтобы избежать кодирования следующего такого Орбита Марса. (Это был дорогой урок для всех нас, работающих с числовыми данными.:))
Sys.setenv(TZ="GMT")
– Brian Diggs 5 October 2011 в 22:40