2013-07-30 2 views
2

Я испытываю очень странное поведение анализа strptime.Странное поведение strptime в R

Это моя R сессия на окна машины

> R.Version()$version.string 
[1] "R version 2.15.2 (2012-10-26)" 
> a <- (strptime( "29-MAR-13 02.26.53.000000000 AM" , "%d-%B-%y %I.%M.%OS %p")) 
> str(a) 
POSIXlt[1:1], format: "2013-03-29 02:26:53" 
> # convert to double: doesn't work 
> as.double(a) 
[1] NA 
> b <- (strptime( "29-MAR-13 04.26.53.000000000 AM" , "%d-%B-%y %I.%M.%OS %p")) 
> #same as `a`, but another hour 
> str(b) 
POSIXlt[1:1], format: "2013-03-29 04:26:53" 
> #convert to double: works 
> as.double(b) 
[1] 1364520413 
> #WTF ??? 

Я тестировал тот же код на другой машине (Linux) с различной малой версии R. Код работал, как и ожидалось, в обоих случаях:

> R.Version()$version.string 
[1] "R version 2.15.1 (2012-06-22)" 
> a <- (strptime( "29-MAR-13 02.26.53.000000000 AM" , "%d-%B-%y %I.%M.%OS %p")) 
> str(a) 
POSIXlt[1:1], format: "2013-03-29 02:26:53" 
> # convert to double: WORKS! 
> as.double(a) 
[1] 1364513213 
> b <- (strptime( "29-MAR-13 04.26.53.000000000 AM" , "%d-%B-%y %I.%M.%OS %p")) 
> #same as `a`, but another hour 
> str(b) 
POSIXlt[1:1], format: "2013-03-29 04:26:53" 
> #convert to double: works 
> as.double(b) 
[1] 1364520413 
> 

Может кто-нибудь сказать мне, в чем проблема? Я нашел ошибку в R?

+0

Работает для меня в 2.15.2, 2.15.3 и 3.0.1. W7, 64 бит. –

+1

Пожалуйста, добавьте вывод 'sessionInfo() $ platform' и другую возможную информацию о вашей ОС. – Roland

+0

работает для меня с 3.1 (разработка), 32-битным Ubuntu, но я получаю разные значения (разные часовые пояса?) –

ответ

2

Вы находитесь в Израиле? Googling «летнее время» 29 марта «показывает, что в 2013 году DST началось 29 марта в Израиле, например. http://www.timeanddate.com/worldclock/clockchange.html?n=110 ... различия в настройках языка/часового пояса между двумя компьютерами, которые вы тестировали, могут, конечно, объяснить это, если один из них установлен в израильский часовой пояс, а другой - нет. Вы можете проверить это, используя tz="GMT" ...

PS: Я посмотрел ваш профиль и увидел, что вы действительно в Израиле. Я не смотрел, прежде чем я изначально отправил ответ!

PPS: A очень большая часть запросов о преобразовании даты и время оказывается о часовом поясе, а конкретно дневной свет экономия-время, вопросы, что и привел меня к ответу в первую очередь ,

+0

Могу я убедиться, что это понимаю? Пример времени пользователя, «29-MAR-13 02.26.53 AM», был истолкован в соответствии с его часовым поясом. strptime() работал. Но, в его TZ, R отмечает, что это была дата перехода на летнее время с 2:00 до 3 утра. Поэтому в пределах своего часового пояса фактически невозможно, чтобы часы говорили «02.26.53AM». Поэтому R замечает, что пользователь поставил «невозможное время», и поэтому «as.double()» возвращает NA. Удивительно! Dediction: это время не было от TZ пользователя. У меня есть это право? Заставляет меня задаться вопросом, что R делает осенью со временем в час сдвига назад. – pauljohn32

Смежные вопросы