我正在提取一个看起来像这样的时间戳 - 2014-02-03T19:24:07Z
我正在尝试计算自 1 月 1 日以来的天数。
我能够使用将其转换为日期时间
yourdate = dateutil.parser.parse(timestamp)
但现在我正在尝试解析它并获取单个元素,例如月份和日期。
有没有办法将它转换为 strptime 以便我可以选择每个元素?
我正在提取一个看起来像这样的时间戳 - 2014-02-03T19:24:07Z
我正在尝试计算自 1 月 1 日以来的天数。
我能够使用将其转换为日期时间
yourdate = dateutil.parser.parse(timestamp)
但现在我正在尝试解析它并获取单个元素,例如月份和日期。
有没有办法将它转换为 strptime 以便我可以选择每个元素?
只需使用year
, month
,day
属性访问月、日..
>>> import dateutil.parser
>>> yourdate = dateutil.parser.parse('2014-02-03T19:24:07Z')
>>> yourdate.year
2014
>>> yourdate.month
2
>>> yourdate.day
3
只是为了更完整一点:
>>> from dateutil.parser import parse
>>> from datetime import datetime
>>> import pytz
>>> d = parse('2014-02-03T19:24:07Z')
>>> other = datetime(year=2014, month=1, day=1, tzinfo=pytz.utc)
>>> (d-other).days
33
other
如果您创建日期时间datetime
而不是使用解析的日期时间,则必须确保日期时间是时区感知的dateutil
。
无需转换。生成的datetime.datetime
对象具有您可以直接访问的所有必要属性。例如:
>>> import dateutil.parser
>>> timestamp="2014-02-03T19:24:07Z"
>>> yourdate = dateutil.parser.parse(timestamp)
>>> yourdate.day
3
>>> yourdate.month
2
请参阅:https ://docs.python.org/2/library/datetime.html#datetime-objects
如果你想计算:
import dateutil.parser
yourdate = dateutil.parser.parse('2014-02-03T19:24:07Z')
startdate = dateutil.parser.parse('2014-01-01T00:00:00Z')
print (yourdate - startdate)
dateutil
没有模块的另一种解决方法:
import datetime
# start date for comparision
start = datetime.date(2014, 1, 1)
# timestamp as string
datefmt = "%Y-%m-%dT%H:%M:%SZ"
current = "2014-02-03T19:24:07Z"
# convert timestamp string to date, dropping time
end = datetime.datetime.strptime(current, datefmt).date()
# compare dates and get number of days from timedelta object
days = (end - start).days
这假设您不关心时间(包括时区)。