【问题标题】:Formatting date with leading zeros for month and day and removing slashes用前导零格式化月份和日期的日期并删除斜线
【发布时间】:2015-06-06 17:38:48
【问题描述】:

传入日期如下所示:

3/9/2015

我已经想出了如何去掉/ 标记的日期,所以我现在有了这个:

392015

现在,我需要在月份和日期中使用前导零,因此所需的输出是

03092015

【问题讨论】:

    标签: python datetime


    【解决方案1】:

    与其剥离斜线,不如将其分开。列表中有 3 个不同的数字,分别与日、月和年相关,因此请逐一检查,如果长度为 1,则在开头添加一个零。最后将它们连接在一起,你就有了你的号码。

    还有另一种添加前导零的快速方法。使用str().zfill( num ) 将用零填充字符串,直到达到一定数量的字符。

    由于您应该能够在第一段之后自己编写它,所以我将放入一个单行版本,以便您可以看到它有效,但不要复制它,因为很明显不是您写的.

    i = "3/9/2015"
    
    print ''.join(x.zfill(2) for x in i.split('/'))
    # 03092015
    

    这是一种不用zfill的方式:

    print ''.join(('0' if len(x)<2 else '')+x for x in i.split('/'))
    

    【讨论】:

    • 这正是我所做的。
    • 是的,看起来像哈哈,虽然我正在写,但没看到你的;p
    • 如果我也得到像 12/1/1996 和 12/12/1996 这样的日期,这会起作用吗?这会知道月份和日期应始终为 2 位数字吗?
    • 是的,zfill 中给出的数字意味着它只会添加零,直到字符串达到该长度,在本例中为 2 :)
    • 我们使用的是 python 2.5,使用此代码时出现错误。您知道 2.5 版的不同代码来完成此操作吗?
    【解决方案2】:

    如果您不想使用 for 循环或任何太花哨的东西,只需执行以下简单操作:

    date = '392015'
    
    newdate = '0' + date[0] + '0' + date[1:]
    

    这将输出:

    03092015
    

    从字面上看,所有这些都是“添加”零。

    更新:要让这种primitive 技术适用于所有日期,只需使用两个primitive 'if-statements' ;)

    date = '3/9/2015'
    oldDate = date.split('/')
    
    if len(oldDate[0]) < 2:
        oldDate[0]= '0' + oldDate[0]
    if len(oldDate[1]) < 2:
        oldDate[1]= '0' + oldDate[1]
    
    newDate = ''.join(oldDate)
    

    (注意:我只是给出了 OP 选项,绝不是我声称这是一个更好的方法)

    【讨论】:

    • 这技术太原始了。
    • @MalikBrahimi 我知道,但我不想因为抄袭你而受到谴责;)
    • 取决于它是否只是那个日期,或者它可能是任何一个哈哈,不会像 15/6/2015 这样很好地工作:)
    【解决方案3】:

    先拆分再填充再加入:

    newDate = ''.join(i.zfill(2) for i in oldDate.split('/'))
    

    【讨论】:

      猜你喜欢
      • 2020-10-18
      • 2013-01-29
      • 2019-02-06
      • 1970-01-01
      • 2011-11-29
      • 1970-01-01
      • 2022-10-14
      • 2017-11-16
      • 1970-01-01
      相关资源
      最近更新 更多