如何将包含7位数的日期字符串(以毫秒为单位)转换为Python中的日期

时间:2016-11-24 10:00:59

标签: python date datetime

当milliseonds有6位数时,%f有效,但如果超过6位数则会抛出错误。我有一个临时的解决方案,硬编码0为第7位,但有更好的方法吗?目前以下作品

print (datetime.datetime.strptime(('2014-11-19 00:00:00.0000000').strip(), '%Y-%m-%d  %H:%M:%S.0%f')).date()

3 个答案:

答案 0 :(得分:2)

根据datetime.strptime() https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior的文档,技术说明(4),%f只接受1到6个字符:

  

%f是C标准中格式字符集的扩展名   (但是在datetime对象中单独实现,因此总是如此   可用)。当与strptime()方法一起使用时,%f指令   接受一到六位数字和右边的零焊盘。

我不相信你已经正确地解决了这个问题。你不应该在字符串前加零,而是将所有内容放在6以上(这对于贡献时间来说不那么重要)。

这样的事情:

s='2014-11-19 00:00:00.0000000'
print (datetime.datetime.strptime((s[:26]).strip(), '%Y-%m-%d  %H:%M:%S.%f')).date()

答案 1 :(得分:0)

如果您只想要日期,只需提取日期!

>>> datetime_string = '2014-11-19 00:00:00.0000000'
>>> date_string = datetime_string[:10]
>>> date_string
'2014-11-19'
>>> print(datetime.strptime(date_string, '%Y-%m-%d')).date()
2014-11-19

答案 2 :(得分:0)

我认为评论#1中的解决方案还可以,但需要进行一些修正,

使用如下,

{{1}}

它将删除所有空格,然后从字符串的开头取26个字符,并传递给strptime()方法。