从 Python 中的日期时间对象中删除毫秒

Pri*_*tra 2 python datetime

我试图从2017-09-12 22:33:55.28109Python 中的这个字符串中删除毫秒(28109)。

代码:

import datetime as dt
from datetime import date,datetime

created_date = datetime.fromtimestamp(ctime)
d=datetime.strptime(created_date, "%Y-%m-%d %H:%M:%S.%fZ")
created_date = datetime.strftime(d, "%m/%d/%Y %I:%M:%S %p")
print(created_date)
Run Code Online (Sandbox Code Playgroud)

错误:

`d=datetime.strptime(created_date, "%Y-%m-%d %H:%M:%S.%fZ")`
Run Code Online (Sandbox Code Playgroud)

TypeError: must be str, not datetime.datetime

Mar*_*ers 5

已经有了一个datetime对象,你不需要再次解析它。该datetime.fromtimestamp()电话是不够的。

删除datetime.strptime()线。

created_date = datetime.fromtimestamp(ctime)
created_date = created_date.strftime("%m/%d/%Y %I:%M:%S %p")
print(created_date)
Run Code Online (Sandbox Code Playgroud)

我也改变了你的strftime()调用,它是一个方法,你只需在datetime你拥有的对象上调用它。

我怀疑您打印了datetime.fromtimestamp()调用的返回值,并感到困惑。在str()一个转换datetime()的实例将值的格式为ISO 8601字符串。请注意,即使您确实有一个字符串,也使用了错误的格式(该字符串中没有时区,因此%Z不适用)。

如果您需要一个datetime对象,而不是格式化的字符串,您也可以将时间戳转换为整数;微秒在时间戳的小数部分被捕获:

>>> ctime = 1505252035.28109
>>> datetime.fromtimestamp(ctime)
datetime.datetime(2017, 9, 12, 22, 33, 55, 281090)
>>> datetime.fromtimestamp(int(ctime))
datetime.datetime(2017, 9, 12, 22, 33, 55)
>>> print(_)
2017-09-12 22:33:55
Run Code Online (Sandbox Code Playgroud)