Python,strptime在毫秒段中跳过零

时间:2015-06-24 12:31:53

标签: python datetime timestamp strptime

我想从字符串中提取时间戳,但毫秒部分未正确读取

var dateQuery = dbContext.Database.SqlQuery<DateTime>("SELECT getdate()");
DateTime serverDate = dateQuery.AsEnumerable().First();

产生以下输出

datetime.strptime('20130629110924095','%Y%m%d%H%M%S%f')

而不是

datetime.datetime(2013, 6, 29, 11, 9, 24, 95000)

要明确:95毫秒

我做错了什么?

3 个答案:

答案 0 :(得分:2)

微秒由六位数组成。 95毫秒= 95000微秒。 所以要获得95毫秒的日期时间,如datetime.datetime(2013, 6, 29, 11, 9, 24, 95000),写:

datetime.strptime('20130629110924095000','%Y%m%d%H%M%S%f')

答案 1 :(得分:2)

documentation说:

  

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

所以你得到的结果是预期的行为,你的&#39; 095&#39;被填充到&#39; 095000&#39;。

答案 2 :(得分:1)

var myString = 'Hello word Sentence number'; var myStringArray = myString.split(" "); myStringArray.forEach(function(entry) { entry += " " }); 以微秒为单位,相当于95毫秒,即输入(95000)已经正确,如果你想得到95毫秒。

这是相同的输入,带有一些额外的格式以便于阅读:

'095'

毫秒是>>> from datetime import datetime >>> datetime.strptime('2013-06-29 11:09:24.095','%Y-%m-%d %H:%M:%S.%f') datetime.datetime(2013, 6, 29, 11, 9, 24, 95000) 秒,因此0.001毫秒是95秒,这就是0.095是解析小数部分的095的正确输入的原因一秒钟。