[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Time convertion



Alex Schuster wrote:
> 
> Hi!
> 
> I have to convert some date formats, and I wonder why IDL does not give
> more support here. A common date/time format is the seconds since 1970,
> and the systime() funtion can return the current date in this format.
> Yippie! But why is there no function to convert this from/to standard
> ASCII date strings, or from/to Julian date?
> 
> I found such a thing in the Astro library, st2date, input is the
> seconds-since-1970, output is year, month, day etc., and even day and
> month in ASCII notation if one likes. Great. But I did not find
> something yet to convert to seconds-since-1970. I could write it myself,
> but I guess this already had be done some dozen times. Some big routine
> with many, many keywords to convert between all those formats would be
> nice :)

Hmm... I doubt you found that in the Astro library, since I wrote it and
posted it to the newsgroup back in 1998.  I did use daycnv from the
astro package to convert julian to calendar dates.  The recent
IDL-bundled "caldat" will work just as well for that now.  In any case,
it is oh so trivial to convert date to systime, the inverse:

st=(julday(month,day,year,hr,min,sec)-2440587.5D)*86400.0D 

That's it!  For instance:

IDL> st0=systime(0) & st1=systime(1)
IDL> d=bin_date(st0)
IDL> st=(julday(d[1],d[2],d[0],d[3],d[4],d[5])-2440587.5D)*86400.0D 
IDL> print,FORMAT='(A,":",2D30.5)',st0,st1,st

Keeping in mind that systime(1) often returns GMT on many systems,
whereas systime(0) returns localtime, meaning you might have several
hours offset between st1 and st above.  For me, st1-st=5 hours (EST).

Good luck,

JD