Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert string to date, format: "dd.mm.yyyy"

Tags:

date

r

D <- "06.12.1948"                 # which is dd.mm.yyyy
as.Date(D, "%d.%m.%y")            # convert to date
[1] "2019-12-06"                  # ????    

what is it that I am missing?

Sys.getlocale(category = "LC_ALL") [1] "LC_COLLATE=German_Austria.1252;LC_CTYPE=German_Austria.1252;LC_MONETARY=German_Austria.1252;LC_NUMERIC=C;LC_TIME=German_Austria.1252"

like image 777
Kay Avatar asked Dec 06 '11 10:12

Kay


1 Answers

The format is case-sensitive ("%y" is ambiguous and system dependent, I believe):

as.Date(D, "%d.%m.%Y")
[1] "1948-12-06"

The help topic ?strptime has details:

 ‘%y’ Year without century (00-99).  On input, values 00 to 68 are
      prefixed by 20 and 69 to 99 by 19 - that is the behaviour
      specified by the 2004 and 2008 POSIX standards, but they do
      also say ‘it is expected that in a future version the default
      century inferred from a 2-digit year will change’.
like image 116
mdsumner Avatar answered Sep 27 '22 17:09

mdsumner