关于python3
{{删除前导零,我遇到了几个答案(1,2,3) 1}}对象。
投票最多的answers州之一:
在Windows上,您可以使用#,例如
datetime
上面的代码对我不起作用。我也尝试过使用%Y/%#m/%#d
代替-
的Linux解决方案,但没有成功。
代码:
#
追溯:
loop_date = "1950-1-1"
date_obj = datetime.strptime(loop_date, '%Y-%m-%d') # or '%Y-%#m-%#d' which produces the errors below
date_obj += timedelta(days=1)
print(date_obj)
# This the prints `1954-01-02` but I need `1954-1-2`
pythonic 解决这个问题的方法是什么?
答案 0 :(得分:2)
您将解析(字符串转换为dt)和格式化(将dt转换为字符串)的格式混淆:
适用于 linux (或通过http://pyfiddle.io在线):
import datetime
dt = datetime.datetime.now()
# format datetime as string
print(datetime.datetime.strftime(dt, '%Y-%-m-%-d')) # - acts to remove 0 AND as delimiter
# parse a string into a datetime object
dt2 = datetime.datetime.strptime("1022-4-09", '%Y-%m-%d')
print(dt2)
输出:
2018-4-5
1022-04-09 00:00:00
格式化字符串时-
用于删除前导0 AND作为分隔符 - 对于解析它只需要作为分隔符放置 - 解析对02
或2
进行解析%m
适用于 Windows (VS2017):
from datetime import datetime, timedelta
loop_date = "1950-1-1"
date_obj = datetime.strptime(loop_date, '%Y-%m-%d')
date_obj += timedelta(days=1)
print(date_obj) # output the datetime-object
print(datetime.strftime(date_obj,'%Y-%#m-%#d')) # output it formatted
输出:
1950-01-02 00:00:00
1950-1-2