Python 不带前导零的Datetime对象

Python 不带前导零的Datetime对象,python,python-3.x,datetime,Python,Python 3.x,Datetime,关于python3datetime对象的前导零的删除,我遇到了几个答案(,) 投票最多的州之一: 在Windows上,您可以使用#,例如%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

关于
python3
datetime
对象的前导零的删除,我遇到了几个答案(,)

投票最多的州之一:

在Windows上,您可以使用#,例如
%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`
回溯:

Traceback (most recent call last):
  File "C:/collect_games.py", line 84, in <module>
    date_obj = datetime.strptime(loop_date, '%Y-%-m-%d')
  File "E:\Anaconda3\lib\_strptime.py", line 565, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "E:\Anaconda3\lib\_strptime.py", line 354, in _strptime
    (bad_directive, format)) from None
ValueError: '#' is a bad directive in format '%Y-%#m#%d'
回溯(最近一次呼叫最后一次):
文件“C:/collect_games.py”,第84行,在
date_obj=datetime.strtime(循环_日期,%Y-%m-%d)
文件“E:\Anaconda3\lib\ \u strtime.py”,第565行,在\u strtime\u datetime中
tt,分数=_strtime(数据字符串,格式)
文件“E:\Anaconda3\lib\ \u strtime.py”,第354行,在\u strtime中
(bad_指令,格式))来自无
ValueError:“#”是格式为“%Y-%#m#%d”的错误指令

对于这个问题,最具python风格的方法是什么?

您混淆了解析(将字符串转换为dt)和格式化(将dt转换为字符串)的格式:

这适用于linux(或在线通过):

输出:

2018-4-5
1022-04-09 00:00:00
1950-01-02 00:00:00
1950-1-2
格式化字符串时,
-
会删除前导的0并作为分隔符-解析时只需将其作为分隔符-解析在
02
2
上对
%m


这适用于Windows(VS2017):

输出:

2018-4-5
1022-04-09 00:00:00
1950-01-02 00:00:00
1950-1-2

您混淆了解析(将字符串转换为dt)和格式化(将dt转换为字符串)的格式:

这适用于linux(或在线通过):

输出:

2018-4-5
1022-04-09 00:00:00
1950-01-02 00:00:00
1950-1-2
格式化字符串时,
-
会删除前导的0并作为分隔符-解析时只需将其作为分隔符-解析在
02
2
上对
%m


这适用于Windows(VS2017):

输出:

2018-4-5
1022-04-09 00:00:00
1950-01-02 00:00:00
1950-1-2


您正在分析此处的时间日期时间。。。将日期时间格式化为字符串时应用
-
。。。。python不需要在字符串中插入
02
,就可以理解它的月份或其他内容。。。要将月份从字符串解析为datetime对象,请删除
%
m
之间的
-
。我需要将输出格式化为不带前导零,这在我当前的代码中是不会发生的。@Kasramvd在php中,您可以使用
j
表示不带前导零的月日,或
d
表示带前导零的月日。您正在创建一个带有标准表示形式的
datetime
对象。删除这些零是另一个问题,与对象的字符串表示形式有关。您正在分析此处的时间日期时间。。。将日期时间格式化为字符串时应用
-
。。。。python不需要在字符串中插入
02
,就可以理解它的月份或其他内容。。。要将月份从字符串解析为datetime对象,请删除
%
m
之间的
-
。我需要将输出格式化为不带前导零,这在我当前的代码中是不会发生的。@Kasramvd在php中,您可以使用
j
表示不带前导零的月日,或
d
表示带前导零的月日。您正在创建一个带有标准表示形式的
datetime
对象。删除这些零是另一个问题,与对象的字符串表示有关。您的代码生成:
Traceback(最近一次调用):文件“C:/collect_games.py”,第7行,打印(datetime.datetime.strftime(dt),%Y-%m-%d'))ValueError:python3.6上的格式字符串无效,与问题的代码没有任何不同,这会产生相同的错误。@PedroLobito将我的代码复制到-它与2.7和3.6一样工作?您的代码运行正常,但在我的windows python3.6上运行不正常。我几乎可以肯定这是一个安装问题,而不是语法问题。@Pedrolobi想查看编辑。io是一台linux服务器,它可以在Windows(VS2017)上运行。奇怪,因为我已经试过了……我想我只能在
打印时应用“删除过滤器”(
-
)。我会认为你的答案是正确的。谢谢。您的代码生成:
回溯(上次调用):文件“C:/collect_games.py”,第7行,打印(datetime.datetime.strftime(dt,'%Y-%-m-%d'))值错误:
Python3.6
上的无效格式字符串,这会产生相同的错误。@Pedrolobi要将我的代码复制到-它与2.7和3.6一样工作?您的代码运行正常,但在我的windows python3.6上运行不正常。我几乎可以肯定这是一个安装问题,而不是语法问题。@Pedrolobi想查看编辑。io是一台linux服务器,它可以在Windows(VS2017)上运行。奇怪,因为我已经试过了……我想我只能在
打印时应用“删除过滤器”(
-
)。我会认为你的答案是正确的。非常感谢。