未转换的数据仍然存在:Python 中的 .387000
unconverted data remains: .387000 in Python
我有一个日期时间,它是我从文本文件中读取的字符串。我想要 trim 额外的毫秒数,但我想先将它转换为日期时间变量。这是因为根据文本文件中的内容,它可能采用不同的格式。然而,我尝试过的一切都希望我已经知道格式。请看看我在这里尝试的内容:
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`
有人可以告诉我如何进行正常的日期时间格式吗?在其他语言中,我可以传递各种格式,然后毫无问题地将其设置为新格式。
您忘记在 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)
此处 mytime
在 datetime
对象中。如果你想打印没有微秒,使用 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
免责声明:这仅适用于您不重新格式化或重新排列任何内容,并且仅在您试图删除最后一位的情况下。
替代解决方案是使用 split():
# mytime is str(timestamp)
datetime.datetime.strptime(mytime.split('.')[0], '%Y-%m-%d %H:%M:%S')
我有一个日期时间,它是我从文本文件中读取的字符串。我想要 trim 额外的毫秒数,但我想先将它转换为日期时间变量。这是因为根据文本文件中的内容,它可能采用不同的格式。然而,我尝试过的一切都希望我已经知道格式。请看看我在这里尝试的内容:
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`
有人可以告诉我如何进行正常的日期时间格式吗?在其他语言中,我可以传递各种格式,然后毫无问题地将其设置为新格式。
您忘记在 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)
此处 mytime
在 datetime
对象中。如果你想打印没有微秒,使用 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
免责声明:这仅适用于您不重新格式化或重新排列任何内容,并且仅在您试图删除最后一位的情况下。
替代解决方案是使用 split():
# mytime is str(timestamp)
datetime.datetime.strptime(mytime.split('.')[0], '%Y-%m-%d %H:%M:%S')