strptime字符串到datetime对象的转换

时间:2019-05-30 07:10:06

标签: python

我有一个Python2.7脚本,其中的变量date= "21/05/2019"正常工作。 我需要将date变量设为datetime.now - 60 days

但是输出必须类似于time.struct_time(tm_year=2019, tm_mon=5, tm_mday=28, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=148, tm_isdst=-1)

datetime.datetime.now()strptime无效。

import datetime, time
from datetime import timedelta

N = 60
#pre_create_date = datetime.datetime.today() - datetime.timedelta(days=N)
pre_create_date = "28/04/2019"

# Sort out date format
pre_create_date = time.strptime(pre_create_date, "%d/%m/%Y")

print pre_create_date

我希望能够使用datetime.datetime.today() - datetime.timedelta(days=N),但输出将成为日期时间对象。

编辑:

我似乎对自己的解释不太好。抱歉。

脚本为:

import datetime, time
from datetime import timedelta

N = 60
#pre_create_date = datetime.datetime.today() - datetime.timedelta(days=N)
pre_create_date = "28/04/2019"

# Sort out date format
pre_create_date = time.strptime(pre_create_date, "%d/%m/%Y")

print pre_create_date

输出:

time.struct_time(tm_year=2019, tm_mon=4, tm_mday=28, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=118, tm_isdst=-1)

使用datetime.now - datetime.timedelta的脚本:

import datetime, time
from datetime import timedelta

N = 60
pre_create_date = datetime.datetime.today() - datetime.timedelta(days=N)

print pre_create_date

输出:

2019-03-31 21:09:25.183459

预期输出:

time.struct_time(tm_year=2019, tm_mon=3, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=118, tm_isdst=-1)

3 个答案:

答案 0 :(得分:1)

使用时 pre_create_date = time.strptime(pre_create_date, "%d/%m/%Y")

您正在创建一个time.struct_time对象。

改为使用datetime.datetime.strptime("28/04/2019", "%d/%m/%Y"),我想您会实现目标的

答案 1 :(得分:0)

您遇到语法问题,将print pre_create_date更改为print (pre_create_date),然后将一个{strong>字符串分配给pre_create_date,尝试以日期格式获取它,并使用pre_create_date = pre_create_date.strftime("%Y.%m.%d %H:%M:%S.%f")或任何您喜欢的格式

祝你好运。

答案 2 :(得分:0)

尝试:-

import time
import datetime


print(time.strftime("%Y-%m-%d %H:%M:%S %w/%j"))

pre_create_date = (datetime.datetime.today() - datetime.timedelta(60)).strftime("%Y-%m-%d %H:%M:%S %w/%j")

print(pre_create_date)

输出:-

2019-05-30 12:59:27 4/150
2019-03-31 12:59:27 0/090

工作方式:-

上面的代码首先打印出当前的时间戳(格式是您要求的格式)。然后输出当前日期(今天-60)之前的60天时间戳。

只需使用strftime()即可从当前日期获取我们想要的属性。

strftime()中使用的代码解释:-

%Y     Year with century as a decimal number.
%m     Month as a zero-padded decimal number.
%d     Day of the month as a zero-padded decimal.

%H     Hour (24-hour clock) as a zero-padded decimal number.
%M     Minute as a zero-padded decimal number.
%S     Second as a zero-padded decimal number.

%w     Week number of the year (Monday as the first day of the week). All days in a new year preceding the first Monday are considered to be in week 0.
%j     Day of the year as a zero-padded decimal number.

注意:-通过strftime()传递日期后,输出将是数据类型string。如果您希望输出为日期时间对象,请使用:-

datetimeobj_1 = datetime.datetime.strptime(pre_create_date, "%Y-%m-%d %H:%M:%S %w/%j")
print(type(datetimeobj_1))

输出:-

<class 'datetime.datetime'>

如果您希望输出为“ time.struct_time”对象,请使用:-

datetimeobj_1 = time.strptime(pre_create_date, "%Y-%m-%d %H:%M:%S %w/%j")
print(type(datetimeobj_1))

输出:-

<class 'time.struct_time'>