我想在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。
答案 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的部分可能对您有用。