python - 不带前导零的日期时间对象

标签 python python-3.x datetime

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

投票最多的人之一 answers状态:

On Windows, you would use #, e.g. %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'

解决此问题的最 pythonic 方法是什么?

最佳答案

您混淆了解析格式(将字符串转换为 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 并作为分隔符 - 对于解析它只需要作为分隔符放置 - 解析适用于 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

关于python - 不带前导零的日期时间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49674902/

相关文章:

python - 如何在 Python 数据框中查找不共享公共(public)日期(或索引)的行

python - 我的代数求解器哪里出了问题?

python - 使用 bit.ly v4(从 bit.ly v3 迁移)和 python 3.7 和 bitlyshortener 包缩短长 URL

python - PyAutoGUI 无法导入 pyscreeze

iphone - ios 游戏中心提交时间并在排行榜中显示

python - 为什么我的绘图将 x 轴上的日期时间绘制为指数?

python - Django 命令错误 : App 'polls' has migrations

python - 将数组中的十六进制转换为二进制

mysql - 如何使用日期时间字段作为期间范围?有其他选择吗?

python - 如何将字符串转换为字典或列表?