我有一个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)
答案 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'>