将样本日期列表转换为GMT

时间:2014-01-06 18:19:14

标签: python date

我想在python中编写一个代码,它将所有日期(以各种格式)转换为标准格式。 我在stackoverflow Converting various different date formats in to one common date format Java or Perl上看到了一个问题?

我想在python中完成它。

我试过了:

DEFAULT_DATE = datetime.datetime(datetime.datetime.now().year, 1, 1)
dt = parser.parse(date,default = DEFAULT_DATE)

 Original                                                       Modified
 1.1995-01-24T09:08:17.1823213                           1995-01-24 09:08:17.182321
 2. Wed, 16 Jun 94 07:29:35 CST                          1994-06-16 07:29:35
 3. Thu, 13 Oct 94 10:13:13 -0700                        1994-10-13 10:13:13-07:00
 4. Wed, 9 Nov 1994 09:50:32 -0500 (EST)                 1994-11-09 09:50:32-05:00
 5. 21 dec 17:05                                         2014-12-21 17:05:00
 6. 21-dec 17:05                                         2014-12-21 17:05:00
 7. 21/dec 17:05                                         2014-12-21 17:05:00
 8. 21/dec/93 17:05                                      1993-12-21 17:05:00
 9. 16 Nov 94 22:28:20 PST                               1994-11-16 22:28:20
 10. 1999 10:02:18 'GMT'                                 1999-01-01 10:02:18+00:00

我也需要将时间转换为GMT。与2,3,4,9一样,它显示与原始列表中给出的时间相同。我想将它们转换为GMT。 对于日期和时间,如4,9,它在EST和PST等,我想将它们转换为GMT。

2 个答案:

答案 0 :(得分:1)

您可以将所有日期时间转换为UTC,将所有天真日期时间对象视为UTC:

import pytz
def to_utc(dt):
    try:
        return dt.astimezone(pytz.utc)
    except ValueError:
        return pytz.utc.localize(dt)

演示:

>>> print '\n'.join(original)
1995-01-24T09:08:17.1823213
Wed, 16 Jun 94 07:29:35 CST
Thu, 13 Oct 94 10:13:13 -0700
Wed, 9 Nov 1994 09:50:32 -0500 (EST)
21 dec 17:05
21-dec 17:05
21/dec 17:05
21/dec/93 17:05
16 Nov 94 22:28:20 PST
1999 10:02:18 'GMT'
>>> modified = [parser.parse(od, default=DEFAULT_DATE) for od in original]
>>> in_utc = [to_utc(md) for md in modified]
>>> for d in in_utc:
...     print d
...
1995-01-24 09:08:17.182321+00:00
1994-06-16 07:29:35+00:00
1994-10-13 17:13:13+00:00
1994-11-09 14:50:32+00:00
2014-12-21 17:05:00+00:00
2014-12-21 17:05:00+00:00
2014-12-21 17:05:00+00:00
1993-12-21 17:05:00+00:00
1994-11-16 22:28:20+00:00
1999-01-01 10:02:18+00:00

答案 1 :(得分:0)

在这里,查看dateutil.parser的{​​{3}},特别是有关tzinfo的部分可能对您有用。