Skip to main content
 首页 » 编程设计

Python time.strptime() 给出了错误的结果

2025年05月04日14zlslch

我正在尝试解析 mbox 格式的电子邮件假脱机。

我有执行此操作的代码:

if string.find(line, 'Date: ') == 0:                      
    try: 
        when = time.mktime(time.strptime(line[6:30], "%a, %d %b %Y %H:%M:%S")) 

通常它似乎工作正常,除了当 line = 'Date: Sat, 17 Apr 2004 22:29:37 -0400\n' 它似乎给出了错误的结果(22:29:03 而不是 22:29:37)。

这是我的 pdb 跟踪:

(Pdb) p line 
'Date: Sat, 17 Apr 2004 22:29:37 -0400\n' 
(Pdb) p time.strptime(line[6:30], "%a, %d %b %Y %H:%M:%S") 
time.struct_time(tm_year=2004, tm_mon=4, tm_mday=17, tm_hour=22, tm_min=29, tm_sec=3, tm_wday=5, tm_yday=108, tm_isdst=-1) 
(Pdb) 

结果似乎差了 34 秒。我做错了什么?

请您参考如下方法:

你把你的线切得太短了;第二个值不包含,不包含:

>>> line[6:30] 
'Sat, 17 Apr 2004 22:29:3' 
>>> line[6:31] 
'Sat, 17 Apr 2004 22:29:37' 
>>> time.strptime(line[6:31], "%a, %d %b %Y %H:%M:%S") 
time.struct_time(tm_year=2004, tm_mon=4, tm_mday=17, tm_hour=22, tm_min=29, tm_sec=37, tm_wday=5, tm_yday=108, tm_isdst=-1)