python 中 strftime 的基本日期解析用法
Basic date parsing usage with strftime in python
这是一个关于strftime中日期解析符号用法的简单问题。给定以下格式的日期:
mydt = "25-06 01:02:03"
那么我对正确解析字符串的尝试是:
DateFormat = '%d-%m %H:%M:%S'
但显然这是不正确的:
import dateutil.parser
DateFormat = '%d-%m %H:%M:%S'
mydt = "25-06 01:02:03"
dateutil.parser.parse(mydt).strftime(DateFormat)
ValueError: month must be in 1..12
请建议适当的 tweak/fix 解析模式。
dateutil.parser.parse()
函数不需要格式化程序。它无需配置即可解析各种日期时间格式。
改用datetime.datetime.strptime()
class方法:
from datetime import datetime
result = datetime.strptime(mydt, DateFormat)
请注意,如果输入中没有年份,生成的 datetime()
对象会将年份设置为 1900
。你总是可以用当年来解决这个问题:
this_year = datetime.now().year
result = result.replace(year=this_year)
如果您需要支持闰年的 2 月 29 日,请将年份添加到您的输入中并解析:
DateFormat = '%Y %d-%m %H:%M:%S'
year_prefix = '{:%Y} '.format(datetime.now())
result = datetime.strptime(year_prefix + mydt, DateFormat)
演示:
>>> from datetime import datetime
>>> DateFormat = '%d-%m %H:%M:%S'
>>> datetime.strptime(mydt, DateFormat)
datetime.datetime(1900, 6, 25, 1, 2, 3)
>>> this_year = datetime.now().year
>>> datetime.strptime(mydt, DateFormat).replace(year=this_year)
datetime.datetime(2015, 6, 25, 1, 2, 3)
>>> DateFormat = '%Y %d-%m %H:%M:%S'
>>> year_prefix = '{:%Y} '.format(datetime.now())
>>> datetime.strptime(year_prefix + mydt, DateFormat)
datetime.datetime(2015, 6, 25, 1, 2, 3)
这是一个关于strftime中日期解析符号用法的简单问题。给定以下格式的日期:
mydt = "25-06 01:02:03"
那么我对正确解析字符串的尝试是:
DateFormat = '%d-%m %H:%M:%S'
但显然这是不正确的:
import dateutil.parser
DateFormat = '%d-%m %H:%M:%S'
mydt = "25-06 01:02:03"
dateutil.parser.parse(mydt).strftime(DateFormat)
ValueError: month must be in 1..12
请建议适当的 tweak/fix 解析模式。
dateutil.parser.parse()
函数不需要格式化程序。它无需配置即可解析各种日期时间格式。
改用datetime.datetime.strptime()
class方法:
from datetime import datetime
result = datetime.strptime(mydt, DateFormat)
请注意,如果输入中没有年份,生成的 datetime()
对象会将年份设置为 1900
。你总是可以用当年来解决这个问题:
this_year = datetime.now().year
result = result.replace(year=this_year)
如果您需要支持闰年的 2 月 29 日,请将年份添加到您的输入中并解析:
DateFormat = '%Y %d-%m %H:%M:%S'
year_prefix = '{:%Y} '.format(datetime.now())
result = datetime.strptime(year_prefix + mydt, DateFormat)
演示:
>>> from datetime import datetime
>>> DateFormat = '%d-%m %H:%M:%S'
>>> datetime.strptime(mydt, DateFormat)
datetime.datetime(1900, 6, 25, 1, 2, 3)
>>> this_year = datetime.now().year
>>> datetime.strptime(mydt, DateFormat).replace(year=this_year)
datetime.datetime(2015, 6, 25, 1, 2, 3)
>>> DateFormat = '%Y %d-%m %H:%M:%S'
>>> year_prefix = '{:%Y} '.format(datetime.now())
>>> datetime.strptime(year_prefix + mydt, DateFormat)
datetime.datetime(2015, 6, 25, 1, 2, 3)