Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
b8bb4664
Kaydet (Commit)
b8bb4664
authored
Ock 08, 2011
tarafından
Alexander Belopolsky
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Issue #1777412: extended year range of strftime down to 1000.
üst
9253214f
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
15 additions
and
15 deletions
+15
-15
datetime.py
Lib/datetime.py
+4
-4
datetimetester.py
Lib/test/datetimetester.py
+3
-3
_datetimemodule.c
Modules/_datetimemodule.c
+6
-6
timemodule.c
Modules/timemodule.c
+2
-2
No files found.
Lib/datetime.py
Dosyayı görüntüle @
b8bb4664
...
...
@@ -173,9 +173,9 @@ def _format_time(hh, mm, ss, us):
# Correctly substitute for %z and %Z escapes in strftime formats.
def
_wrap_strftime
(
object
,
format
,
timetuple
):
year
=
timetuple
[
0
]
if
year
<
1
9
00
:
raise
ValueError
(
"year=
%
d is before 1
9
00; the datetime strftime() "
"methods require year >= 1
9
00"
%
year
)
if
year
<
1
0
00
:
raise
ValueError
(
"year=
%
d is before 1
0
00; the datetime strftime() "
"methods require year >= 1
0
00"
%
year
)
# Don't call utcoffset() or tzname() unless actually needed.
freplace
=
None
# the string to use for %f
zreplace
=
None
# the string to use for %z
...
...
@@ -1189,7 +1189,7 @@ class time:
"""Format using strftime(). The date part of the timestamp passed
to underlying strftime should not be used.
"""
# The year must be >= 1
9
00 else Python's strftime implementation
# The year must be >= 1
0
00 else Python's strftime implementation
# can raise a bogus exception.
timetuple
=
(
1900
,
1
,
1
,
self
.
_hour
,
self
.
_minute
,
self
.
_second
,
...
...
Lib/test/datetimetester.py
Dosyayı görüntüle @
b8bb4664
...
...
@@ -1284,10 +1284,10 @@ class TestDate(HarmlessMixedComparison, unittest.TestCase):
self
.
assertTrue
(
self
.
theclass
.
max
)
def
test_strftime_out_of_range
(
self
):
# For nasty technical reasons, we can't handle years before 1
9
00.
# For nasty technical reasons, we can't handle years before 1
0
00.
cls
=
self
.
theclass
self
.
assertEqual
(
cls
(
1
900
,
1
,
1
)
.
strftime
(
"
%
Y"
),
"19
00"
)
for
y
in
1
,
49
,
51
,
99
,
100
,
1000
,
18
99
:
self
.
assertEqual
(
cls
(
1
000
,
1
,
1
)
.
strftime
(
"
%
Y"
),
"10
00"
)
for
y
in
1
,
49
,
51
,
99
,
100
,
9
99
:
self
.
assertRaises
(
ValueError
,
cls
(
y
,
1
,
1
)
.
strftime
,
"
%
Y"
)
def
test_replace
(
self
):
...
...
Modules/_datetimemodule.c
Dosyayı görüntüle @
b8bb4664
...
...
@@ -1166,10 +1166,10 @@ wrap_strftime(PyObject *object, PyObject *format, PyObject *timetuple,
if
(
!
pin
)
return
NULL
;
/* Give up if the year is before 1
9
00.
/* Give up if the year is before 1
0
00.
* Python strftime() plays games with the year, and different
* games depending on whether envar PYTHON2K is set. This makes
* years before 1
9
00 a nightmare, even if the platform strftime
* years before 1
0
00 a nightmare, even if the platform strftime
* supports them (and not all do).
* We could get a lot farther here by avoiding Python's strftime
* wrapper and calling the C strftime() directly, but that isn't
...
...
@@ -1182,10 +1182,10 @@ wrap_strftime(PyObject *object, PyObject *format, PyObject *timetuple,
assert
(
PyLong_Check
(
pyyear
));
year
=
PyLong_AsLong
(
pyyear
);
Py_DECREF
(
pyyear
);
if
(
year
<
1
9
00
)
{
if
(
year
<
1
0
00
)
{
PyErr_Format
(
PyExc_ValueError
,
"year=%ld is before "
"1
9
00; the datetime strftime() "
"methods require year >= 1
9
00"
,
"1
0
00; the datetime strftime() "
"methods require year >= 1
0
00"
,
year
);
return
NULL
;
}
...
...
@@ -3663,7 +3663,7 @@ time_strftime(PyDateTime_Time *self, PyObject *args, PyObject *kw)
/* Python's strftime does insane things with the year part of the
* timetuple. The year is forced to (the otherwise nonsensical)
* 1900 to wor
m
around that.
* 1900 to wor
k
around that.
*/
tuple
=
Py_BuildValue
(
"iiiiiiiii"
,
1900
,
1
,
1
,
/* year, month, day */
...
...
Modules/timemodule.c
Dosyayı görüntüle @
b8bb4664
...
...
@@ -471,9 +471,9 @@ time_strftime(PyObject *self, PyObject *args)
return
NULL
;
/* XXX: Reportedly, some systems have issues formating dates prior to year
* 1
9
00. These systems should be identified and this check should be
* 1
0
00. These systems should be identified and this check should be
* moved to appropriate system specific section below. */
if
(
buf
.
tm_year
<
0
)
{
if
(
buf
.
tm_year
<
-
90
0
)
{
PyErr_Format
(
PyExc_ValueError
,
"year=%d is before 1900; "
"the strftime() method requires year >= 1900"
,
buf
.
tm_year
+
1900
);
...
...
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