【问题标题】:problem of date conversion from english to french英文到法文日期转换问题
【发布时间】:2019-10-16 08:42:59
【问题描述】:

我尝试将英文日期 (2019-10-07) 转换为法文日期 (07/10/2016)

我试试

dat = '07/10/2019'
dat = time.strftime('%Y-%m-%d') 

但得到的结果是“2019-10-16”而不是“2019-10-07”

【问题讨论】:

  • 因为 16 日是今天的日期,而您没有在第二行中转换上述日期

标签: python time strftime


【解决方案1】:

使用datetime,您可以决定提供源日期的格式以及您想要的目标格式。

from datetime import datetime

dat = '07/10/2019'
datetime.strptime(dat, "%d/%m/%Y").strftime("%Y-%m-%d")

out[6]: '2019-10-07'

【讨论】:

    【解决方案2】:

    strftime 需要一个时间/日期来转换,如果您不提供,它将使用 当前 日期和时间。 dat 的先前值不相关 - strftime 看不到此信息。

    您需要提供strftime 将格式化的时间信息,作为一个元组,您可以通过解析原始字符串获得。为此,请使用strptime(f 表示格式,p 表示解析)。

    所以:

    dmy = '07/10/2019'
    ymd = time.strftime('%Y-%m-%d', time.strptime(dmy, '%d/%m/%Y'))
    #                    ^^^^^^^^                       ^^^^^^^^
    #                    output schema                  input schema
    # now ymd is '2019-10-07'
    

    (或者您可以像在另一个答案中一样使用datetime 模块。这样,解析会为您提供一个对象,该对象有一个 method 来格式化 - 这样您就可以编写整个操作“按顺序”就行了。但大体原理是一样的:先解析,再格式化,每边都需要指定schema。)

    【讨论】:

    • 我明白了!
    【解决方案3】:

    与:

    dat = time.strftime('%Y-%m-%d')
    

    你恢复了你的实际日期。

    你需要做:

    from datetime import datetime
    
    dat = '07/10/2019'
    dat = datetime.strptime(dat, '%m/%d/%Y')
    
    print(dat.strftime('%Y-%m-%d') )
    

    【讨论】:

      猜你喜欢
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      相关资源
      最近更新 更多