未转换的数据仍然存在:在Python中为:387000

2024-06-16 09:43:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个日期时间,它是我从文本文件中读取的字符串。我想删去额外的毫秒,但我想先把它转换成datetime变量。这是因为根据文本文件中的内容,它可能有不同的格式。但是,我所做的一切都想让我知道格式。请看一看我在尝试什么:

import time, datetime

mytime = "2015-02-16 10:36:41.387000"
myTime = time.strptime(mytime, "%Y-%m-%d %H:%M:%S.%f")

myFormat = "%Y-%m-%d %H:%M:%S"

print datetime.datetime.fromtimestamp(time.mktime(time.strptime(mytime, myFormat)))

但这给了我一个错误:

File "python", line 10, in <module>
ValueError: unconverted data remains: .387000`

有人能告诉我如何做一个正常的日期时间格式吗?在其他语言中,我可以传递不同的格式,然后将其设置为新的格式,而不会出现问题。


Tags: 字符串import内容datetimetime格式时间print
3条回答

你忘了在myFormat中引用微秒

myFormat = "%Y-%m-%d %H:%M:%S.%f"

不管怎样,你可以用更少的步骤来转换它

from datetime import datetime

mytime = "2015-02-16 10:36:41.387000"
full = "%Y-%m-%d %H:%M:%S.%f"
myTime = datetime.strptime(mytime, full)
>>> datetime.datetime(2015, 2, 16, 10, 36, 41, 387000)

这里mytimedatetime对象中。如果您想要不带微秒的打印,请使用strftime

myfmt = "%Y-%m-%d %H:%M:%S"
print datetime.strptime(mytime, full).strftime(myfmt)
>>> 2015-02-16 10:36:41

你是在倒退。试试这个:

from datetime import datetime

mytime = "2015-02-16 10:36:41.387000"
myTime = datetime.strptime(mytime, "%Y-%m-%d %H:%M:%S.%f")

myFormat = "%Y-%m-%d %H:%M:%S"

print "Original", myTime
print "New", myTime.strftime(myFormat)

结果:

Original 2015-02-16 10:36:41.387000
New 2015-02-16 10:36:41

如果没有其他改变,即格式,除了你在结尾处删除微秒,你不需要真正调用strftime。你只需将其替换为:

mytime = "2015-02-16 10:36:41.387000"
mytime = mytime[:-7]    
print mytime

结果:

2015-02-16 10:36:41

免责声明:这只适用于你不重新格式化或重新排列任何东西,只有当你试图删除最后一位。

相关问题 更多 >