I have a time series that I have pulled from a netCDF file and I'm trying to convert them to a datetime format. The format of the time series is in 'days since 1990-01-01 00:00:00 +10' (+10 being GMT: +10)
time = nc_data.variables['time'][:]
time_idx = 0 # first timestamp
time_datetime = time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(time[time_idx]*24*60*60))
timedelta is probably what you're looking for.
from datetime import date, timedelta days = 9465 # This may work for floats in general, but using integers # is more precise (e.g. days = int(9465.0)) start = date(1990,1,1) # This is the "days since" part delta = timedelta(days) # Create a time delta object from the number of days offset = start + delta # Add the specified number of days to 1990 print(offset) # >>> 2015-12-01 print(type(offset)) # >>> <class 'datetime.date'>
You can then use and/or manipulate the offset object, or convert it to a string representation however you see fit.
You can use the same format as for this date object as you do for your
Instead of using a
date object, you could use a
datetime object instead if, for example, you were later going to add hours/minutes/seconds/timezone offsets to it.
The code would stay the same as above with the exception of two lines:
# Here, you're importing datetime instead of date from datetime import datetime, timedelta # Here, you're creating a datetime object instead of a date object start = datetime(1990,1,1) # This is the "days since" part
Note: Although you don't state it, but the other answer suggests you might be looking for timezone aware datetimes. If that's the case,
dateutil is the way to go in Python 2 as the other answer suggests. In Python 3, you'd want to use the