是否有一种打印Python日期时间的格式,不会在日期和时间使用零填充?
格式我现在正在使用:
mydatetime.strftime('%m/%d/%Y %I:%M%p')
Run Code Online (Sandbox Code Playgroud)
结果: 02/29/2012 05:03 PM
期望: 2/29/2012 5:03 PM
什么格式将月份表示为"2"而不是"02",时间表示为"5:03 PM"而非"05:03 PM"
我从数据库中获取了一个带有以下变量的日期
{{ i.operation_date }}
Run Code Online (Sandbox Code Playgroud)
我得到了一个像这样的价值
April 1, 2013
Run Code Online (Sandbox Code Playgroud)
我需要在上面添加一年,这样我才能得到
April 1, 2014
Run Code Online (Sandbox Code Playgroud)
请建议,我该怎么做?
我对Python仍然有点慢,所以除了文档中明显的内容之外,我还没有弄明白这一点等等.
我曾经使用过Django,他们通过模板标签添加了一些日期时间格式化选项,但是在常规python代码中如何才能获得12 小时不带前导零的小时?
有一种直截了当的方法吗?我正在查看"strftime()"的2.5和2.6文档,并且在这种情况下似乎没有格式化选项.
我应该使用其他东西吗?
随意添加任何其他时间格式提示,这些提示在文档中并不明显.=)
在问题904928(Python strftime - 没有领先0的日期?) Ryan回答:
实际上我有同样的问题,我意识到,如果你在%和字母之间添加一个连字符,你可以删除前导零.
例如%Y /% - m /% - d.
我遇到了同样的问题,这是一个很好的解决方案,但是,为什么这样做呢?
>>> import datetime
>>> datetime.datetime(2015, 3, 5).strftime('%d')
'05'
>>> datetime.datetime(2015, 3, 5).strftime('%-d')
'5'
# It also works with a leading space
>>> datetime.datetime(2015, 3, 5).strftime('%e')
' 5'
>>> datetime.datetime(2015, 3, 5).strftime('%-e')
'5'
# Of course other numbers doesn't get stripped
>>> datetime.datetime(2015, 3, 15).strftime('%-e')
'15'
Run Code Online (Sandbox Code Playgroud)
我找不到任何关于这方面的文件?- > python datetime docs/python string operations
看起来这在Windows机器上不起作用,我不使用Windows,但知道它为什么不起作用会很有趣?
在Ruby 1.9程序中,我想格式化当前时间Thu 1:51 PM.我应该在一天中的某个小时使用什么格式的代码(1在本例中)?
Time.now.strftime '%a %I:%M %p' #=> "Thu 01:51 PM"
Time.now.strftime '%a %l:%M %p' #=> "Thu 1:51 PM"
Run Code Online (Sandbox Code Playgroud)
%I有一个前导零(01).%l有一个领先的空间( 1).我没有在strftime文档中看到小时的任何其他格式代码.我无法使用,.lstrip因为空间位于字符串的中间.我可以使用.gsub(/ +/, " "),但我想知道是否有一个更少的hacky,更简单的方式.
是否有一种灵活的方法来摆脱Python中日期字符串的前导零?
在下面的例子中,我想得到12/1/2009而不是12/01/2009.我想我可以使用正则表达式.但对我来说,这似乎有点矫枉过正.有更好的解决方案吗?
>>> time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
'12/01/2009'
Run Code Online (Sandbox Code Playgroud)
假设我已经声明了三个变量,它们是一个日期,我如何将它们组合成一个新的变量,我可以通过简单地打印新的变量名称以正确的1/2/03格式打印它们.
month = 1
day = 2
year = 03
date = month, day, year <<<<< What would this code have to be?
print(date)
Run Code Online (Sandbox Code Playgroud)
我知道如果我单独调用所有三个变量,我可以在print语句中设置sep ='/'参数,但这意味着我不能在print语句中添加另外的文本而不用/分隔.因此我需要一个我可以调用的变量.
我已经遇到好几个答案(1,2,3关于)去除前导零的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`
Run Code Online (Sandbox Code Playgroud)
追溯:
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, …Run Code Online (Sandbox Code Playgroud) python ×7
datetime ×4
date ×2
formatting ×2
strftime ×2
time ×2
leading-zero ×1
python-2.7 ×1
python-3.x ×1
ruby ×1
ruby-1.9 ×1
time-format ×1
zero-pad ×1