我有一个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)
带有strptime
的datetime.datetime.now()
将不起作用。
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)
,但输出是datetime对象。
编辑:
看起来我没有很好的解释自己。真对不起。
脚本是:
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)
发布于 2019-05-30 15:48:20
尝试:-
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
工作:-
上面的代码首先打印出当前的时间戳(格式就是您要求的格式)。然后输出当前日期(today - 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
。如果您希望输出是datetime对象,则使用:-
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'>
发布于 2019-05-30 15:15:05
使用pre_create_date = time.strptime(pre_create_date, "%d/%m/%Y")
时
您正在创建一个time.struct_time
对象。
用datetime.datetime.strptime("28/04/2019", "%d/%m/%Y")
代替,我想你会得到你想要的
发布于 2019-05-30 15:26:03
您有语法问题,首先将print pre_create_date
更改为print (pre_create_date)
,然后将字符串分配给pre_create_date
,尝试以日期格式获取它,然后使用pre_create_date = pre_create_date.strftime("%Y.%m.%d %H:%M:%S.%f")
或您喜欢的任何格式,
祝好运。
https://stackoverflow.com/questions/56373410
复制相似问题