2016-10-04 52 views
3

我想 2010-03-01转换为733832将日期转换为序数python?

我刚刚发现这个toordinal代码

d=datetime.date(year=2010, month=3, day=1) 
d.toordinal() 

this

但我想更多的东西一样

d=datetime.date('2010-03-01') 
d.toordinal() 

在此先感谢

+1

看[strptime(https://docs.python.org/2 /library/datetime.html#datetime.datetime.strptime) –

回答

3

你需要的日期字符串中使用strptime,指定格式,那么你可以调用date对象的toordinal方法:

>>> from datetime import datetime as dt 
>>> d = dt.strptime('2010-03-01', '%Y-%m-%d').date() 
>>> d 
datetime.date(2010, 3, 1) 
>>> d.toordinal() 
733832 

在这种情况下的date方法的调用是多余的,仅保留用于使对象一致而不是datetime对象为date对象。

如果你正在寻找处理更多的日期字符串格式,Python's strftime directives是一个很好的参考你想检查。

3

这样的:

datetime.strptime("2016-01-01", "%Y-%m-%d").toordinal() 
2

您需要使用strptime()时间字符串首先转换为datetime对象。然后调用.toordinal()datetime对象

>>> from datetime import datetime 
>>> date = datetime.strptime('2010-03-01', '%Y-%M-%d') 
>>> date.toordinal() 
733773 

上它甚至更好地创建一个函数来实现这一目标为:

def convert_date_to_ordinal(date): 
    return datetime.strptime(date, '%Y-%M-%d').toordinal() 

convert_date_to_ordinal('2010-03-01') 
#returns: 733773