Re: [Rd] Negative years with strptime?

From: Rui Barradas <ruipbarradas_at_sapo.pt>
Date: Wed, 11 Jul 2012 05:23:44 +0100

On my earlier post I forgot to mention the sessionInfo()

R version 2.15.0 (2012-03-30)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=Portuguese_Portugal.1252 LC_CTYPE=Portuguese_Portugal.1252
[3] LC_MONETARY=Portuguese_Portugal.1252 LC_NUMERIC=C

[5] LC_TIME=Portuguese_Portugal.1252

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

Rui Barradas

Em 11-07-2012 02:05, Winston Chang escreveu:
> It looks different on my system (Mac, R 2.15.1)
>
> seq(as.Date("0000-01-01"), length = 22, by = "-1 year")
> [1] "0000-01-01" "-001-01-01" "-002-01-01" "-003-01-01" "-004-01-01"
> [6] "-005-01-01" "-006-01-01" "-007-01-01" "-008-01-01" "-009-01-01"
> [11] "-010-01-01" "-011-01-01" "-012-01-01" "-013-01-01" "-014-01-01"
> [16] "-015-01-01" "-016-01-01" "-017-01-01" "-018-01-01" "-019-01-01"
> [21] "-020-01-01" "-021-01-01"
>
> So in addition to the issues with converting a negative-year string to a
> Date, it looks like converting a negative date to a string with
> as.character.Date() is probably also not consistent.
>
> It certainly would be useful to have a way of handling dates with
> negative years.
>
> -Winston
>
>
> On Tue, Jul 10, 2012 at 4:59 PM, Rui Barradas <ruipbarradas_at_sapo.pt
> <mailto:ruipbarradas_at_sapo.pt>> wrote:
>
> Hello,
>
> Is there a bug with negative dates? Just see:
>
> seq(as.Date("0000-01-01"), length = 22, by = "-1 year")
> [1] "0000-01-01" "000/-01-01" "000.-01-01" "000--01-01" "000,-01-01"
> [6] "000+-01-01" "000*-01-01" "000)-01-01" "000(-01-01" "000'-01-01"
> [11] "00/0-01-01" "00//-01-01" "00/.-01-01" "00/--01-01" "00/,-01-01"
> [16] "00/+-01-01" "00/*-01-01" "00/)-01-01" "00/(-01-01" "00/'-01-01"
> [21] "00.0-01-01" "00./-01-01"
>
> See the year number: "after" the zero, i.e., downward from zero, the
> printed character is '/' which happens to be the ascii character
> before '0', and before it's '.', etc. This sequence gives the nine
> ascii characters before zero as last digit of the year, then the
> 10th is '0' as (now) expected, then goes to the second digit, etc.
>
> It seems to stop at the first 9, or else we would have some sort of
> real problem.
>
> Anyway, this doesn't look right.
>
> Rui Barradas
> Em 10-07-2012 22:17, Winston Chang escreveu:
>
> Is there a way to make as.Date() and strptime() process strings with
> negative years? It appears that Date objects can contain
> negative years and
> you can convert them to strings, but you can't convert them back
> to Date
> objects.
>
>
> x <- as.Date(c("0001-01-24", "0500-01-24"))
> as.character(x)
> # "0001-01-24" "0500-02-02"
> as.Date(as.character(x))
> # "0001-01-24" "0500-01-24"
>
> # Minus 391 days gives negative year
> as.character(x - 391)
> # "-001-12-30" "0498-12-29"
>
> # Can't convert this string back to Date
> as.Date(as.character(x - 391))
> # Error during wrapup: character string is not in a standard
> unambiguous
> format
>
>
> # as.Date.character uses strptime, so we can try using strptime
> directly
> strptime(as.character(x), "%Y-%m-%d")
> # "0001-01-24" "0500-01-24"
>
> strptime(as.character(x - 391), "%Y-%m-%d")
> # NA "0498-12-29"
>
>
> Thanks,
> -Winston
>
> [[alternative HTML version deleted]]
>
> ________________________________________________
> R-devel_at_r-project.org <mailto:R-devel_at_r-project.org> mailing list
> https://stat.ethz.ch/mailman/__listinfo/r-devel
> <https://stat.ethz.ch/mailman/listinfo/r-devel>
>
>
>



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed 11 Jul 2012 - 04:28:53 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 12 Jul 2012 - 16:30:32 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive