我试图从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
你已经有了一个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)