【问题标题】:Convert integer date format to human readable format将整数日期格式转换为人类可读的格式
【发布时间】:2018-04-22 06:28:53
【问题描述】:

我有一个日期时间格式,其中日期表示为 1/1/1900 中的整数。 例如:1 是 1900 年 1 月 1 日,42998 是 2017 年 9 月 20 日。

如何将此格式转换为人类可读的格式,例如 dd/mm/yyyy ?我检查了datetime 文档,但没有找到任何方法来做到这一点。我想在 python 3 或 2.7 上执行此操作。

感谢您的任何建议。

【问题讨论】:

标签: python python-2.7 python-3.x date


【解决方案1】:

您可以将日期定义为与基准时间的偏移量并构造一个日期时间:

In[22]:
import datetime as dt
dt.datetime(1900,1,1) + dt.timedelta(42998)

Out[22]: datetime.datetime(2017, 9, 22, 0, 0)

一旦它是 datetime 对象,您可以使用任何您想要的格式通过 strftime 将其转换为 str:

In[24]:
(dt.datetime(1900,1,1) + dt.timedelta(42998-1)).strftime('%d/%m/%Y')

Out[24]: '21/09/2017'

所以你可以定义一个用户函数来做到这一点:

In[27]:
def dtToStr(val):
    base = dt.datetime(1900,1,1)
    return (base + dt.timedelta(val-1)).strftime('%d/%m/%Y')
dtToStr(42998)

Out[27]: '21/09/2017'

【讨论】:

    【解决方案2】:
    import datetime
    
    base_date = datetime.datetime(1900, 1, 1)
    convert = lambda x: base_date + datetime.timedelta(days=x-1)
    >>> convert(42998)
    datetime.datetime(2017, 9, 21, 0, 0)
    

    【讨论】:

      【解决方案3】:

      您可以使用datetime 对象来执行此操作。

      import datetime
      d = datetime.datetime(1900, 1, 1, 0, 0)
      d + datetime.timedelta(days = 42998)
      >> datetime.datetime(2017, 9, 22, 0, 0)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-09
        • 1970-01-01
        • 2021-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多