Python strftime - 没有前导 0 的日期?

2025-02-28 08:22:00
admin
原创
68
摘要:问题描述:使用 Python 时strftime,如果日期在 10 号之前,是否有办法删除日期的第一个 0,即?01找不到1这个%东西吗?谢谢!解决方案 1:实际上我遇到了同样的问题,我意识到,如果在和字母之间添加连字符%,就可以删除前导零。例如%Y/%-m/%-d:>>> import d...

问题描述:

使用 Python 时strftime,如果日期在 10 号之前,是否有办法删除日期的第一个 0,即?01找不到1这个%东西吗?

谢谢!


解决方案 1:

实际上我遇到了同样的问题,我意识到,如果在和字母之间添加连字符%,就可以删除前导零。

例如%Y/%-m/%-d

>>> import datetime
>>> datetime.datetime(2023, 1, 2).strftime("%Y/%-m/%-d")
'2023/1/2'

这仅适用于 Unix(Linux、OS X),不适用于 Windows(包括 Cygwin)。在 Windows 上,您可以使用#,例如%Y/%#m/%#d

解决方案 2:

format从python2.6开始,我们可以利用这个方法来做这样的事情:

>>> import datetime
>>> '{dt.year}/{dt.month}/{dt.day}'.format(dt = datetime.datetime.now())
'2013/4/19'

虽然可能超出了原始问题的范围,但对于更有趣的格式,您可以执行以下操作:

>>> '{dt:%A} {dt:%B} {dt.day}, {dt.year}'.format(dt=datetime.datetime.now())
'Wednesday December 3, 2014'

从 python3.6 开始,这可以表示为内联格式化的字符串:

Python 3.6.0a2 (v3.6.0a2:378893423552, Jun 13 2016, 14:44:21) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> dt = datetime.datetime.now()
>>> f'{dt:%A} {dt:%B} {dt.day}, {dt.year}'
'Monday August 29, 2016'

解决方案 3:

%根据http://docs.python.org/library/time.html ,某些平台可能支持和字母之间的宽度和精度规范(例如,'d' 表示月份中的日期) ——但这绝对是一个不可移植的解决方案(例如,在我的 Mac 上不起作用;-)。也许您可以在后面使用字符串替换(或 RE,用于非常讨厌的格式)strftime来补救?例如:

>>> y
(2009, 5, 7, 17, 17, 17, 3, 127, 1)
>>> time.strftime('%Y %m %d', y)
'2009 05 07'
>>> time.strftime('%Y %m %d', y).replace(' 0', ' ')
'2009 5 7'

解决方案 4:

这是 GNU C 库支持的修饰符的文档strftime()。(就像人们之前说的,它可能不可移植。)您可能感兴趣的是:

  • %e而不是%d将用空格替换月份中的前导零

与Python 文档strftime() Format Codes进行比较。%d记录如下:

%d:以零填充的十进制数表示月份中的日期。示例:01、02、…、31

%e没有文档记录。尽管没有文档记录,但对我来说它似乎不管怎样都有效(运行 Linux):

>>> import datetime
>>> datetime.datetime(2023, 1, 1).strftime("%e")
' 1'

我不知道它是否可以在你的操作系统上运行。

解决方案 5:

>>> import datetime
>>> d = datetime.datetime.now()
>>> d.strftime('X%d/X%m/%Y').replace('X0','X').replace('X','')
'5/5/2011'

解决方案 6:

在 Windows 上,添加“#”,如“%#m/%#d/%Y %#I:%M:%S %p”

参考:https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx

解决方案 7:

参加聚会已经很晚了,但%-d我可以继续工作。

datetime.now().strftime('%B %-d, %Y')产生类似“2014 年 11 月 5 日”的结果

欢呼:)

解决方案 8:

请看-下面的内容:

>>> from datetime import datetime
>>> datetime.now().strftime('%d-%b-%Y')
>>> '08-Oct-2011'
>>> datetime.now().strftime('%-d-%b-%Y')
>>> '8-Oct-2011'
>>> today = datetime.date.today()
>>> today.strftime('%d-%b-%Y')
>>> print(today)

解决方案 9:

我发现 Django 模板日期格式过滤器既快捷又简单。它会删除前导零。如果您不介意导入 Django 模块,请查看它。

http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date

from django.template.defaultfilters import date as django_date_filter
print django_date_filter(mydate, 'P, D M j, Y')    

解决方案 10:

replace只需像这样使用:

(datetime.date.now()).strftime("%Y/%m/%d").replace("/0", "/")

它将输出:

'2017/7/21'

解决方案 11:

因为%d您可以使用 转换为整数,int()所以它会自动删除前导 0 并变为整数。然后您可以使用 转换回字符串str()

解决方案 12:

例如,使用“%-d”即使是在同一个操作系统的不同版本之间也是不可移植的。更好的解决方案是分别提取日期组件,然后为每个组件选择日期特定的格式化运算符和日期属性访问。

e = datetime.date(2014, 1, 6)
"{date:%A} {date.day} {date:%B}{date.year}".format(date=e)

解决方案 13:

如果我们只想获取不带前导零的日期,我们可以

d = date.today()
day = int(d.strftime("%d"))

解决方案 14:

Python 3.6+:

from datetime import date
today = date.today()
text = "Today it is " + today.strftime(f"%A %B {today.day}, %Y")

解决方案 15:

因为 Python 实际上只是调用您平台上的 C 语言strftime(3)函数,所以可能存在可用于控制前导零的格式字符;尝试man strftime看看。但是,当然,结果将不可移植,正如 Python 手册会提醒您的那样。:-)

我会尝试使用新式datetime对象,它具有t.yeart.month和之类的属性t.day,并将它们通过运算符的正常、高性能格式化%,该运算符确实支持对前导零的控制。有关详细信息,请参阅http://docs.python.org/library/datetime.html。更好的是,如果您的Python有运算符,请使用"".format()它,并且更加现代;它也有很多数字格式选项。请参阅:http ://docs.python.org/library/string.html#string-formatting 。

解决方案 16:

根据 Alex 的方法,这对于字符串开头和空格后的情况都有效:

re.sub('^0|(?<= )0', '', "01 January 2000 08:00am")

我比 .format 或 %-d 更喜欢它,因为它是跨平台的并且允许我继续使用 strftime(获取“十一月”和“星期一”之类的内容)。

解决方案 17:

老问题,但 %l (小写 L)在 strftime 中对我有用:但这可能并不适用于所有人,因为它没有在我发现的 Python 文档中列出

解决方案 18:

import datetime
now = datetime.datetime.now()
print now.strftime("%b %_d")

解决方案 19:

我迟到了,但简单的列表切片就可以完成工作

today_date = date.today().strftime('%d %b %Y')
if today_date[0] == '0':
    today_date = today_date[1:]

解决方案 20:

标准库对于大多数情况来说已经足够好了,但对于真正详细的日期操作,您应该始终寻找一些专门的第三方库。

使用箭头:

>>> import arrow
>>> arrow.utcnow().format('dddd, D. M. YYYY')
'Friday, 6. 5. 2022'

查看受支持的令牌的完整列表。

解决方案 21:

有点棘手,但对我有用

例如从2021-02-01T00:00:00.000Z2021-02-1

from datetime import datetime

dateObj = datetime.strptime('2021-02-01T00:00:00.000Z','%Y-%m-%dT%H:%M:%S.%fZ')
dateObj.strftime('%Y-%m-{}').format(dateObj.day)

解决方案 22:

一种业余方法,通过转换为“int”来删除日期和月份的“0”前缀

dt = "08/01/2023"
dtArr = d.split("/")
print(str(int(x[0]))+'/'+str(int(x[1]))+'/'+str(int(x[2])))
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2941  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1803  
  PLM(产品生命周期管理)系统在企业的产品研发、生产与管理过程中扮演着至关重要的角色。然而,在实际运行中,资源冲突是经常会遇到的难题。资源冲突可能导致项目进度延迟、成本增加以及产品质量下降等一系列问题,严重影响企业的效益与竞争力。因此,如何有效应对PLM系统中的资源冲突,成为众多企业关注的焦点。接下来,我们将详细探讨5...
plm项目管理系统   31  
  敏捷项目管理与产品生命周期管理(PLM)的融合,正成为企业在复杂多变的市场环境中提升研发效率、增强竞争力的关键举措。随着技术的飞速发展和市场需求的快速更迭,传统的研发流程面临着诸多挑战,而将敏捷项目管理理念融入PLM,有望在2025年实现研发流程的深度优化,为企业创造更大的价值。理解敏捷项目管理与PLM的核心概念敏捷项...
plm项目   31  
  模块化设计在现代产品开发中扮演着至关重要的角色,它能够提升产品开发效率、降低成本、增强产品的可维护性与可扩展性。而产品生命周期管理(PLM)系统作为整合产品全生命周期信息的关键平台,对模块化设计有着强大的支持能力。随着技术的不断发展,到 2025 年,PLM 系统在支持模块化设计方面将有一系列令人瞩目的技术实践。数字化...
plm软件   28  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用