Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
news
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Sartika Aritonang
news
Commits
8e6b3d3a
Commit
8e6b3d3a
authored
May 29, 2020
by
Sartika Aritonang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upload New File
parent
034ae569
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
140 additions
and
0 deletions
+140
-0
reference.py
stbi/Lib/site-packages/pytz/reference.py
+140
-0
No files found.
stbi/Lib/site-packages/pytz/reference.py
0 → 100644
View file @
8e6b3d3a
'''
Reference tzinfo implementations from the Python docs.
Used for testing against as they are only correct for the years
1987 to 2006. Do not use these for real code.
'''
from
datetime
import
tzinfo
,
timedelta
,
datetime
from
pytz
import
HOUR
,
ZERO
,
UTC
__all__
=
[
'FixedOffset'
,
'LocalTimezone'
,
'USTimeZone'
,
'Eastern'
,
'Central'
,
'Mountain'
,
'Pacific'
,
'UTC'
]
# A class building tzinfo objects for fixed-offset time zones.
# Note that FixedOffset(0, "UTC") is a different way to build a
# UTC tzinfo object.
class
FixedOffset
(
tzinfo
):
"""Fixed offset in minutes east from UTC."""
def
__init__
(
self
,
offset
,
name
):
self
.
__offset
=
timedelta
(
minutes
=
offset
)
self
.
__name
=
name
def
utcoffset
(
self
,
dt
):
return
self
.
__offset
def
tzname
(
self
,
dt
):
return
self
.
__name
def
dst
(
self
,
dt
):
return
ZERO
import
time
as
_time
STDOFFSET
=
timedelta
(
seconds
=-
_time
.
timezone
)
if
_time
.
daylight
:
DSTOFFSET
=
timedelta
(
seconds
=-
_time
.
altzone
)
else
:
DSTOFFSET
=
STDOFFSET
DSTDIFF
=
DSTOFFSET
-
STDOFFSET
# A class capturing the platform's idea of local time.
class
LocalTimezone
(
tzinfo
):
def
utcoffset
(
self
,
dt
):
if
self
.
_isdst
(
dt
):
return
DSTOFFSET
else
:
return
STDOFFSET
def
dst
(
self
,
dt
):
if
self
.
_isdst
(
dt
):
return
DSTDIFF
else
:
return
ZERO
def
tzname
(
self
,
dt
):
return
_time
.
tzname
[
self
.
_isdst
(
dt
)]
def
_isdst
(
self
,
dt
):
tt
=
(
dt
.
year
,
dt
.
month
,
dt
.
day
,
dt
.
hour
,
dt
.
minute
,
dt
.
second
,
dt
.
weekday
(),
0
,
-
1
)
stamp
=
_time
.
mktime
(
tt
)
tt
=
_time
.
localtime
(
stamp
)
return
tt
.
tm_isdst
>
0
Local
=
LocalTimezone
()
def
first_sunday_on_or_after
(
dt
):
days_to_go
=
6
-
dt
.
weekday
()
if
days_to_go
:
dt
+=
timedelta
(
days_to_go
)
return
dt
# In the US, DST starts at 2am (standard time) on the first Sunday in April.
DSTSTART
=
datetime
(
1
,
4
,
1
,
2
)
# and ends at 2am (DST time; 1am standard time) on the last Sunday of Oct.
# which is the first Sunday on or after Oct 25.
DSTEND
=
datetime
(
1
,
10
,
25
,
1
)
# A complete implementation of current DST rules for major US time zones.
class
USTimeZone
(
tzinfo
):
def
__init__
(
self
,
hours
,
reprname
,
stdname
,
dstname
):
self
.
stdoffset
=
timedelta
(
hours
=
hours
)
self
.
reprname
=
reprname
self
.
stdname
=
stdname
self
.
dstname
=
dstname
def
__repr__
(
self
):
return
self
.
reprname
def
tzname
(
self
,
dt
):
if
self
.
dst
(
dt
):
return
self
.
dstname
else
:
return
self
.
stdname
def
utcoffset
(
self
,
dt
):
return
self
.
stdoffset
+
self
.
dst
(
dt
)
def
dst
(
self
,
dt
):
if
dt
is
None
or
dt
.
tzinfo
is
None
:
# An exception may be sensible here, in one or both cases.
# It depends on how you want to treat them. The default
# fromutc() implementation (called by the default astimezone()
# implementation) passes a datetime with dt.tzinfo is self.
return
ZERO
assert
dt
.
tzinfo
is
self
# Find first Sunday in April & the last in October.
start
=
first_sunday_on_or_after
(
DSTSTART
.
replace
(
year
=
dt
.
year
))
end
=
first_sunday_on_or_after
(
DSTEND
.
replace
(
year
=
dt
.
year
))
# Can't compare naive to aware objects, so strip the timezone from
# dt first.
if
start
<=
dt
.
replace
(
tzinfo
=
None
)
<
end
:
return
HOUR
else
:
return
ZERO
Eastern
=
USTimeZone
(
-
5
,
"Eastern"
,
"EST"
,
"EDT"
)
Central
=
USTimeZone
(
-
6
,
"Central"
,
"CST"
,
"CDT"
)
Mountain
=
USTimeZone
(
-
7
,
"Mountain"
,
"MST"
,
"MDT"
)
Pacific
=
USTimeZone
(
-
8
,
"Pacific"
,
"PST"
,
"PDT"
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment