对不起的标题感到抱歉,这就是我想要做的事情:
我有一个字符串:
month = '1406'
对应于2014年6月。
如何动态地说该字符串代表6月份,我特别想要该月的最后一天。
所以我想用以下格式编写它:'%Y-%m-%d %H:%M:%S'
并且有:
'2014-06-30 00:00:00'
答案 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