Re: Re: list of dates
- To: mathgroup at smc.vnet.net
- Subject: [mg88365] Re: [mg88353] Re: list of dates
- From: Stern <nycstern at gmail.com>
- Date: Sat, 3 May 2008 06:15:25 -0400 (EDT)
- References: <fvegu1$5e9$1@smc.vnet.net> <200805021003.GAA09008@smc.vnet.net>
The following will be accurate within any given year, though depending on your purposes, it may not be good for date math as different years are of different lengths -- dateToFloat3[datestring_] := Module[{ourdate, yearstart, yearend}, ourdate = Take[DateList[datestring], 3]; yearstart = {ourdate[[1]], 1, 1}; yearend = {ourdate[[1]], 12, 31}; (ourdate[[1]] - 1900) + (AbsoluteTime[ourdate] - AbsoluteTime[yearstart])/(AbsoluteTime[yearend] - AbsoluteTime[yearstart]) // N] (* coded for clarity, you could make it shorter and probably quicker if you wanted *) dateToFloat3["1963-01-01"] 63. dateToFloat3["1963-12-31"] 64. dateToFloat3["1963-07-01"] 63.4959 Michael On Fri, May 2, 2008 at 6:03 AM, Jean-Marc Gulliet < jeanmarc.gulliet at gmail.com> wrote: > Roger Nye wrote: > > > I have a list of dates in the format YYYY-MM-DD and I want to convert > them > > to a decimal value, so 1963-01-01 goes to 63.0 and 1985-07-01 goes > roughly > > to 85.5. > > > > Any suggestions on the best way to do this? > > To help you started, the following function assume an input date as a > string and that a year as 360 days (i.e. 12 months of 30 days). > > myDate[d_String] := Module[{yy, mm, dd}, > {yy, mm, dd} = DateList[d][[1 ;; 3]]; > yy = yy - 1900; > td = 30 (mm - 1) + dd; > yy + Rescale[td, {1, 360}] // N > ] > myDate["1963-01-01"] > myDate["1985-07-01"] > > Out[79]= 63. > > Out[80]= 85.5014 > > Regards, > -- Jean-Marc > >
- References:
- Re: list of dates
- From: Jean-Marc Gulliet <jeanmarc.gulliet@gmail.com>
- Re: list of dates