fork download
  1. #!/usr/bin/env python3
  2. import sys
  3. import re
  4. from datetime import datetime, timedelta, timezone
  5.  
  6. for line in sys.stdin:
  7. if not line.strip(): continue
  8. time_string = line.strip()
  9. epoch = datetime(1970, 1, 1, tzinfo=timezone.utc)
  10. ticks, offset = re.match(r'^/Date\((\d+)([+-]\d{4})?\)/$', time_string).groups()
  11. utc_dt = epoch + timedelta(milliseconds=int(ticks))
  12. print(utc_dt, utc_dt.strftime('%Z'))
  13. if offset:
  14. offset = int(offset)
  15. # http://w...content-available-to-author-only...a.org/documentation/odata-version-2-0/json-format
  16. # says offset is minutes (an error?)
  17. dt = utc_dt.astimezone(timezone(timedelta(minutes=offset)))
  18. print(dt, dt.strftime('%Z'))
  19. # but it looks like it could be HHMM
  20. hours, minutes = divmod(abs(offset), 100)
  21. if offset < 0:
  22. hours, minutes = -hours, -minutes
  23. dt = utc_dt.astimezone(timezone(timedelta(hours=hours, minutes=minutes)))
  24. print(dt, dt.strftime('%Z'))
Success #stdin #stdout 0.13s 11272KB
stdin
/Date(1402368967798+0900)/
/Date(1405961743000+0100)/
/Date(1405961743001)/
/Date(1405961743002+0000)/
/Date(1405961743003-0000)/
/Date(1405961743004-0100)/
/Date(1405961743005-0010)/
/Date(1405961743006-0130)/
/Date(1198908717056-0700)/
stdout
2014-06-10 02:56:07.798000+00:00 UTC+00:00
2014-06-10 17:56:07.798000+15:00 UTC+15:00
2014-06-10 11:56:07.798000+09:00 UTC+09:00
2014-07-21 16:55:43+00:00 UTC+00:00
2014-07-21 18:35:43+01:40 UTC+01:40
2014-07-21 17:55:43+01:00 UTC+01:00
2014-07-21 16:55:43.001000+00:00 UTC+00:00
2014-07-21 16:55:43.002000+00:00 UTC+00:00
2014-07-21 16:55:43.002000+00:00 UTC+00:00
2014-07-21 16:55:43.002000+00:00 UTC+00:00
2014-07-21 16:55:43.003000+00:00 UTC+00:00
2014-07-21 16:55:43.003000+00:00 UTC+00:00
2014-07-21 16:55:43.003000+00:00 UTC+00:00
2014-07-21 16:55:43.004000+00:00 UTC+00:00
2014-07-21 15:15:43.004000-01:40 UTC-01:40
2014-07-21 15:55:43.004000-01:00 UTC-01:00
2014-07-21 16:55:43.005000+00:00 UTC+00:00
2014-07-21 16:45:43.005000-00:10 UTC-00:10
2014-07-21 16:45:43.005000-00:10 UTC-00:10
2014-07-21 16:55:43.006000+00:00 UTC+00:00
2014-07-21 14:45:43.006000-02:10 UTC-02:10
2014-07-21 15:25:43.006000-01:30 UTC-01:30
2007-12-29 06:11:57.056000+00:00 UTC+00:00
2007-12-28 18:31:57.056000-11:40 UTC-11:40
2007-12-28 23:11:57.056000-07:00 UTC-07:00