如何将整数转换为日期对象python?

Uda*_*119 22 python date python-2.7

我在python中创建一个模块,其中我以整数格式接收日期20120213,表示2012年2月13日.现在,我想将此整数格式化日期转换为python日期对象.

另外,如果有任何方法可以减去/添加这种整数格式化日期的天数,以便以相同的格式接收日期值?比如减去30天20120213并收到答案20120114

W.P*_*ins 26

这个问题已经回答了,但是为了其他人看到这个问题的好处,我想添加以下建议:不要像上面建议的那样自己切片,你也可以使用strptime()哪个(恕我直言)更容易阅读,也许是这种转换的首选方式.

import datetime
s = "20120213"
s_datetime = datetime.datetime.strptime(s, '%Y%m%d')
Run Code Online (Sandbox Code Playgroud)

  • df ['order_date'] = df ['order_date']。apply(lambda x:pd.to_datetime(str(x),format ='%Y%m%d'))` (3认同)

Jon*_*fer 21

我建议使用以下简单的转换方法:

from datetime import datetime, timedelta
s = "20120213"
# you could also import date instead of datetime and use that.
date = datetime(year=int(s[0:4]), month=int(s[4:6]), day=int(s[6:8]))
Run Code Online (Sandbox Code Playgroud)

对于添加/减去任意数量的天数(秒工作量太多btw.),您可以执行以下操作:

date += timedelta(days=10)
date -= timedelta(days=5)
Run Code Online (Sandbox Code Playgroud)

并转换回使用:

s = date.strftime("%Y%m%d")
Run Code Online (Sandbox Code Playgroud)

要将整数安全地转换为字符串,请使用:

s = "{0:-08d}".format(i)
Run Code Online (Sandbox Code Playgroud)

这样可以确保你的字符串长度为8个字符,并用零填充左边,即使年份小于1000(负数年也可能变得有趣).

进一步参考:datetime对象,timedelta对象


小智 7

import datetime

timestamp = datetime.datetime.fromtimestamp(1500000000)

print(timestamp.strftime('%Y-%m-%d %H:%M:%S'))
Run Code Online (Sandbox Code Playgroud)

这将给出输出:

2017-07-14 08:10:00
Run Code Online (Sandbox Code Playgroud)


Dej*_*kic 6

以下是我认为回答问题的方法(Python 3,带有类型提示):

from datetime import date


def int2date(argdate: int) -> date:
    """
    If you have date as an integer, use this method to obtain a datetime.date object.

    Parameters
    ----------
    argdate : int
      Date as a regular integer value (example: 20160618)

    Returns
    -------
    dateandtime.date
      A date object which corresponds to the given value `argdate`.
    """
    year = int(argdate / 10000)
    month = int((argdate % 10000) / 100)
    day = int(argdate % 100)

    return date(year, month, day)


print(int2date(20160618))
Run Code Online (Sandbox Code Playgroud)

上面的代码产生了预期的2016-06-18.