从Python中的字符串中获取日期时间格式

时间:2014-05-28 16:15:09

标签: python datetime

对不起的标题感到抱歉,这就是我想要做的事情:

我有一个字符串:

month = '1406'

对应于2014年6月。

如何动态地说该字符串代表6月份,我特别想要该月的最后一天。

所以我想用以下格式编写它:'%Y-%m-%d %H:%M:%S'并且有:

'2014-06-30 00:00:00'

2 个答案:

答案 0 :(得分:2)

您使用calendar.monthrange() function获得给定月份的最后一天。将您的字符串转换为两个整数(月,年),从该月的年,月和最后一天创建一个datetime对象:

from datetime import datetime
from calendar import monthrange

year, month = int(month[:2]), int(month[2:])
year += 2000  # assume this century
day = monthrange(year, month)[1]

dt = datetime(year, month, day)  # time defaults to 00:00:00

演示:

>>> from datetime import datetime
>>> from calendar import monthrange
>>> month = '1406'
>>> year, month = int(month[:2]), int(month[2:])
>>> year += 2000  # assume this century
>>> day = monthrange(year, month)[1]
>>> datetime(year, month, day)
datetime.datetime(2014, 6, 30, 0, 0)
>>> print datetime(year, month, day)
2014-06-30 00:00:00

datetime个对象的默认字符串转换已经符合您想要的格式;您可以通过在其上调用str()或使用datetime.datetime.isoformat()方法明确说明。

答案 1 :(得分:0)

这似乎可以解决问题:

import datetime

mon = '1406'
y, m = divmod(int(mon), 100)

dt = datetime.datetime(2000 + y + m // 12, m % 12 + 1, 1) - datetime.timedelta(days=1)
print dt
相关问题