Converting between Different Time Representations#
In Accessing Times, we saw how to access the time columns/attributes of the |TimeSeries| and |BinnedTimeSeries| classes. Here we look in more detail at how to manipulate the resulting times.
Converting Times#
Since the time column in time series is always a |Time| object, it is possible to use the usual attributes on |Time| to convert the time to different formats or scales.
Example#
To get the times as modified Julian Dates from a minimal time series:
>>> from astropy import units as u
>>> from astropy.timeseries import TimeSeries
>>> ts = TimeSeries(time_start='2016-03-22T12:30:31', time_delta=3 * u.s,
... data={'flux': [1., 3., 4., 2., 4.]})
>>> ts.time.mjd
array([57469.52119213, 57469.52122685, 57469.52126157, 57469.5212963 ,
57469.52133102])
Or to convert the times to the Temps Atomique International (TAI) scale:
>>> ts.time.tai
<Time object: scale='tai' format='isot' value=['2016-03-22T12:31:07.000' '2016-03-22T12:31:10.000'
'2016-03-22T12:31:13.000' '2016-03-22T12:31:16.000'
'2016-03-22T12:31:19.000']>
To find the current time scale of the data, you can do:
>>> ts.time.scale
'utc'
See Time and Dates (astropy.time) for more documentation on how to access and convert times.
Formatting Times#
Since the various time columns are |Time| objects, the default format and scale
to use for the display of the time series can be changed using the format
and scale
attributes.
Example#
To change the display of the time series:
>>> ts.time.format = 'isot'
>>> ts
<TimeSeries length=5>
time flux
Time float64
----------------------- -------
2016-03-22T12:30:31.000 1.0
2016-03-22T12:30:34.000 3.0
2016-03-22T12:30:37.000 4.0
2016-03-22T12:30:40.000 2.0
2016-03-22T12:30:43.000 4.0
>>> ts.time.format = 'unix'
>>> ts
<TimeSeries length=5>
time flux
Time float64
------------ -------
1458649831.0 1.0
1458649834.0 3.0
1458649837.0 4.0
1458649840.0 2.0
1458649843.0 4.0
Times Relative to Other Times#
In some cases, it can be useful to use relative rather than absolute times. This can be done by using the |TimeDelta| class instead of the |Time| class, for example, by subtracting a reference time from an existing |Time| object.
Example#
To use a relative rather than an absolute time:
>>> ts_rel = TimeSeries(time=ts.time - ts.time[0])
>>> ts_rel
<TimeSeries length=5>
time
TimeDelta
----------------------
0.0
3.472222222222765e-05
6.94444444444553e-05
0.00010416666666657193
0.00013888888888879958
The |TimeDelta| values can be converted to a different time unit (e.g., second) using:
>>> ts_rel.time.to('second')
<Quantity [ 0., 3., 6., 9., 12.] s>