简体   繁体   中英

Converting a list of datetime objects to a list of number of days since a certain date

I have a large list of dates that are datetime objects like for example

[datetime.datetime(2016,8,14),datetime.datetime(2016,8,13),datetime.datetime(2016,8,12),....etc.]

Instead of datetime objects of the date what I want instead is a list of numerical integer values since the date 1/1/1900 . I have defined 1/1/1900 as the base date and in the for loop below, I have calculated the days between the date in the list since that base date:

baseDate = datetime(1900,1,1)
numericalDates = []
for i in enumerate(dates):
    a=i[1]-baseDate
    numericalDates.append(a)

print(numericalDates)

However when I print this out, I get datetime.timedelta objects instead

[datetime.timedelta(42592), datetime.timedelta(42591), datetime.timedelta(42590),...etc.]

Any ideas on how I can convert it the proper way?

timedelta objects have days attribute, so you can simply append that as an int :

numericalDates.append(a.days)

will result with numericalDates being [42594, 42593, 42592] .

Note that you can also simplify your code a bit by using list comprehension:

numericalDates = [(d - baseDate).days for d in dates]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM