2015-08-26 2 views
5

Использование strptime для текстовых строк с "AM или PM" работал нормально в R версии 3.0.2г strptime (R версия 3.2.2)

> strptime("8/25/2015 6:38:41 PM", "%m/%d/%Y %I:%M:%S %p") 
[1] "2015-08-25 18:38:41" 

Я недавно повышен до R 3.2.2 и теперь найти это commend возвращает NA:

>strptime("8/25/2015 6:38:41 PM", "%m/%d/%Y %I:%M:%S %p") 
[1] NA 

Кажется, что-то связано с «PM». Если удалить «PM» и используйте команду следующим образом, она работает (но, конечно, он интерпретирует как я не PM):

>strptime("8/25/2015 6:38:41", "%m/%d/%Y %H:%M:%S") 
[1] "2015-08-25 06:38:41 NZST" 

Что я здесь отсутствует?

Update:

Спасибо всем за ваши комментарии:

Я переустановил R 3.2.2, но получил ту же ошибку

> strptime("8/25/2015 6:38:41 PM", "%m/%d/%Y %I:%M:%S %p") 
[1] NA 

и вот информация сессии в соответствии с просьбой

> sessionInfo() 
R version 3.2.2 (2015-08-14) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows 7 x64 (build 7601) Service Pack 1 

locale: 
[1] LC_COLLATE=English_New Zealand.1252 LC_CTYPE=English_New Zealand.1252 
[3] LC_MONETARY=English_New Zealand.1252 LC_NUMERIC=C       
[5] LC_TIME=English_New Zealand.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

Затем я изменил локаль, как предложено в соответствующем сообщении

> Sys.setlocale(category="LC_TIME","C") 
[1] "C" 
> strptime("8/25/2015 6:38:41 PM", "%m/%d/%Y %I:%M:%S %p") 
[1] "2015-08-25 18:38:41 NZST" 

И это сработало - но это значит, что я должен менять локаль каждый раз, когда хочу преобразовать текстовое время в класс POSIXct?

+0

strptime использует локаль системы - что это выход 'Sys.getlocale (категория = "LC_ALL")'? – jeremycg

+0

обновлен от – rawr

+0

От версии 3.0.2 –

ответ

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