首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >strptime字符串到datetime对象的转换

strptime字符串到datetime对象的转换
EN

Stack Overflow用户
提问于 2019-05-30 15:10:06
回答 3查看 90关注 0票数 0

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

带有strptimedatetime.datetime.now()将不起作用。

代码语言:javascript
复制
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对象。

编辑:

看起来我没有很好的解释自己。真对不起。

脚本是:

代码语言:javascript
复制
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

输出:

代码语言:javascript
复制
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编写脚本

代码语言:javascript
复制
import datetime, time
from datetime import timedelta

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

print pre_create_date

输出:

代码语言:javascript
复制
2019-03-31 21:09:25.183459

预期输出:

代码语言:javascript
复制
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)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-30 15:48:20

尝试:-

代码语言:javascript
复制
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)

输出:-

代码语言:javascript
复制
2019-05-30 12:59:27 4/150
2019-03-31 12:59:27 0/090

工作:-

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

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

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

代码语言:javascript
复制
%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对象,则使用:-

代码语言:javascript
复制
datetimeobj_1 = datetime.datetime.strptime(pre_create_date, "%Y-%m-%d %H:%M:%S %w/%j")
print(type(datetimeobj_1))

输出:-

代码语言:javascript
复制
<class 'datetime.datetime'>

如果你希望输出是一个'time.struct_time‘对象,那么使用:-

代码语言:javascript
复制
datetimeobj_1 = time.strptime(pre_create_date, "%Y-%m-%d %H:%M:%S %w/%j")
print(type(datetimeobj_1))

输出:-

代码语言:javascript
复制
<class 'time.struct_time'>
票数 0
EN

Stack Overflow用户

发布于 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")代替,我想你会得到你想要的

票数 1
EN

Stack Overflow用户

发布于 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")或您喜欢的任何格式,

祝好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56373410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档