Datetime对象没有前导零

时间:2018-04-05 14:28:32

标签: python python-3.x datetime

关于python3 {{删除前导零,我遇到了几个答案(123) 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 解决这个问题的方法是什么?

1 个答案:

答案 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作为分隔符 - 对于解析它只需要作为分隔符放置 - 解析对022进行解析%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