⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.144
Server IP:
157.245.143.252
Server:
Linux www 6.11.0-9-generic #9-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct 14 13:19:59 UTC 2024 x86_64
Server Software:
nginx/1.26.0
PHP Version:
8.3.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
lib
/
python3
/
dist-packages
/
wadllib
/
View File Name :
iso_strptime.py
# Copyright 2009 Canonical Ltd. All rights reserved. # This file is part of wadllib. # # wadllib is free software: you can redistribute it and/or modify it under the # terms of the GNU Lesser General Public License as published by the Free # Software Foundation, version 3 of the License. # # wadllib is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more # details. # # You should have received a copy of the GNU Lesser General Public License # along with wadllib. If not, see
. """ Parser for ISO 8601 time strings ================================ >>> d = iso_strptime("2008-01-07T05:30:30.345323+03:00") >>> d datetime.datetime(2008, 1, 7, 5, 30, 30, 345323, tzinfo=TimeZone(10800)) >>> d.timetuple() (2008, 1, 7, 5, 30, 30, 0, 7, 0) >>> d.utctimetuple() (2008, 1, 7, 2, 30, 30, 0, 7, 0) >>> iso_strptime("2008-01-07T05:30:30.345323-03:00") datetime.datetime(2008, 1, 7, 5, 30, 30, 345323, tzinfo=TimeZone(-10800)) >>> iso_strptime("2008-01-07T05:30:30.345323") datetime.datetime(2008, 1, 7, 5, 30, 30, 345323) >>> iso_strptime("2008-01-07T05:30:30") datetime.datetime(2008, 1, 7, 5, 30, 30) >>> iso_strptime("2008-01-07T05:30:30+02:00") datetime.datetime(2008, 1, 7, 5, 30, 30, tzinfo=TimeZone(7200)) """ import re import datetime RE_TIME = re.compile(r"""^ # pattern matching date (?P
\d{4})\-(?P
\d{2})\-(?P
\d{2}) # separator T # pattern matching time (?P
\d{2})\:(?P
\d{2})\:(?P
\d{2}) # pattern matching optional microseconds (\.(?P
\d{6}))? # pattern matching optional timezone offset (?P
[\-\+]\d{2}\:\d{2})? $""", re.VERBOSE) class TimeZone(datetime.tzinfo): def __init__(self, tz_string): hours, minutes = tz_string.lstrip("-+").split(":") self.stdoffset = datetime.timedelta(hours=int(hours), minutes=int(minutes)) if tz_string.startswith("-"): self.stdoffset *= -1 def __repr__(self): return "TimeZone(%s)" % ( self.stdoffset.days*24*60*60 + self.stdoffset.seconds) def utcoffset(self, dt): return self.stdoffset def dst(self, dt): return datetime.timedelta(0) def iso_strptime(time_str): x = RE_TIME.match(time_str) if not x: raise ValueError d = datetime.datetime(int(x.group("year")), int(x.group("month")), int(x.group("day")), int(x.group("hour")), int(x.group("minutes")), int(x.group("seconds"))) if x.group("microseconds"): d = d.replace(microsecond=int(x.group("microseconds"))) if x.group("tz_offset"): d = d.replace(tzinfo=TimeZone(x.group("tz_offset"))) return d