IDL/Solarsoft time routinesThis file tries to summarize some of the huge variety of ways to re-formulate times using Solarsoft. TAI and UTC formatsFirst note that a time expressed in TAI units is different to that expressed in UTC units. The difference can be about 30 seconds (it varies with time!). To convert a TAI time to a UTC time, do the following: IDL> time_utc=anytim2utc(time_tai) To create a time in a useful string format, try one of the following: IDL> print,anytim2utc(time_tai, /ccsds) IDL> print,anytim2utc(time_tai, /ccsds, /truncate) IDL> print,anytim2utc(time_tai, /ccsds, /truncate, /time) IDL> print,anytim2utc(time_tai, /ccsds, /date) If you want the month given as string, then do: IDL> print,anytim2utc(time_tai, /vms, /date) Converting to EX formatThe EX format is sometimes handy as it breaks the time into a 7-element array containing year, month, day, hour, minute, second and millisecond, with each given as an integer. The best way seems to be IDL> extime = anytim(time, /ex) The routine anytim2ex() does not seem to work very well. Day-of-year (DOY) formatThis is the number of a day counted from 1-January, which is useful in some circumstances: IDL> print,doy('16-feb-2011') Note that leap years are correctly handled, and 1-January is DOY=1. To convert from a DOY to a regular time format, we have the following example: IDL> d=doy('10-oct-2020') This shows how to add 180 days to a date and return the new
date. If you drop the /string keyword, then the output is in EX format,
which can be converted with the anytim routines to other formats. Converting to year-month-day directory structureA standard time format can be converted to a year-month-day format directory structure with: IDL> print,time2fid('25-dec-2010
12:00',/full_year,delim='/') Convert a time to file ID (fid) formatThis can be useful if you have a data file corresponding to a specific time, and you want to save some derived data into a file that contains the data and time as part of the filename. For example, IDL> print,time2fid('23-oct-2010 09:40',/full_year,/time) Getting current time in SSW formatI'm not aware of a SSW routine to do this so my procedure is
to make use of the built-in systime.pro routine. This can return the
current time in Julian Day (JD) format, which can then be reformatted
into the modified Julian Day (MJD) structure that the SSW anytim
routines use. For example: IDL> jd=systime(/julian,/utc) Another useful routine is the built-in caldat routine: IDL> caldat, jd, m, d, y, hr, min, sec which breaks the Julian Day into month, day, year, etc. This is useful if you want to quickly get the current year, for example. Time of a Carrington mapThe new era of Parker Solar Probe and Solar Orbiter coordination means that remote-sensing people need to get used to working with Carrington maps. The routine carr2ex gives the start time of a specific Carrington number: IDL> print,anytim2utc(/ccsds,carr2ex(2209)) Although an integer was specified here, the input can also be a fractional Carrington number. Also note that if you have Carrington longitude and latitude coordinates then you can convert them to heliocentric (x,y) coordinates with carr2xy.pro. For example, IDL> print,carr2xy([200,5],date='2020-01-14T00:00') Page maintained by Dr Peter R Young. |