Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
barry cho
Hikyuu
Commits
1a6052a1
Commit
1a6052a1
authored
5 years ago
by
fasiondog
Browse files
Options
Download
Email Patches
Plain Diff
update
parent
46ead647
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
hikyuu/test/test_Datetime.py
+14
-0
hikyuu/test/test_Datetime.py
hikyuu_pywrap/_Datetime.cpp
+45
-3
hikyuu_pywrap/_Datetime.cpp
with
59 additions
and
3 deletions
+59
-3
hikyuu/test/test_Datetime.py
0 → 100644
+
14
-
0
View file @
1a6052a1
import
pytest
from
datetime
import
datetime
,
date
from
hikyuu
import
Datetime
def
test_Datetime_init
():
assert
datetime
(
2001
,
1
,
2
)
==
Datetime
(
20010102
).
datetime
()
assert
datetime
(
2001
,
1
,
2
)
==
Datetime
(
2001
,
1
,
2
).
datetime
()
assert
datetime
(
2001
,
1
,
2
)
==
Datetime
(
"20010102"
).
datetime
()
assert
datetime
(
2001
,
1
,
2
)
==
Datetime
(
"2001-01-02"
).
datetime
()
assert
datetime
(
2001
,
1
,
2
)
==
Datetime
(
"2001-1-2"
).
datetime
()
assert
datetime
(
2001
,
1
,
2
)
==
Datetime
(
"2001-01-02 0:0:0"
).
datetime
()
assert
datetime
(
2001
,
1
,
2
)
==
Datetime
(
"20010102T000000"
).
datetime
()
assert
datetime
(
2001
,
1
,
2
,
3
,
4
)
==
Datetime
(
200101020304
).
datetime
()
This diff is collapsed.
Click to expand it.
hikyuu_pywrap/_Datetime.cpp
+
45
-
3
View file @
1a6052a1
...
@@ -29,15 +29,15 @@ std::unique_ptr<Datetime> createFromPyDatetime(const py::object& src) {
...
@@ -29,15 +29,15 @@ std::unique_ptr<Datetime> createFromPyDatetime(const py::object& src) {
minute
=
PyDateTime_DATE_GET_MINUTE
(
src
.
ptr
());
minute
=
PyDateTime_DATE_GET_MINUTE
(
src
.
ptr
());
hour
=
PyDateTime_DATE_GET_HOUR
(
src
.
ptr
());
hour
=
PyDateTime_DATE_GET_HOUR
(
src
.
ptr
());
day
=
PyDateTime_GET_DAY
(
src
.
ptr
());
day
=
PyDateTime_GET_DAY
(
src
.
ptr
());
month
=
PyDateTime_GET_MONTH
(
src
.
ptr
())
-
1
;
month
=
PyDateTime_GET_MONTH
(
src
.
ptr
());
year
=
PyDateTime_GET_YEAR
(
src
.
ptr
());
year
=
PyDateTime_GET_YEAR
(
src
.
ptr
());
microsecond
=
PyDateTime_DATE_GET_MICROSECOND
(
src
.
ptr
());
microsecond
=
PyDateTime_DATE_GET_MICROSECOND
(
src
.
ptr
());
}
else
if
(
PyDate_Check
(
src
.
ptr
()))
{
}
else
if
(
PyDate_Check
(
src
.
ptr
()))
{
day
=
PyDateTime_GET_DAY
(
src
.
ptr
());
day
=
PyDateTime_GET_DAY
(
src
.
ptr
());
month
=
PyDateTime_GET_MONTH
(
src
.
ptr
())
-
1
;
month
=
PyDateTime_GET_MONTH
(
src
.
ptr
());
year
=
PyDateTime_GET_YEAR
(
src
.
ptr
());
year
=
PyDateTime_GET_YEAR
(
src
.
ptr
());
}
else
{
}
else
{
throw
std
::
exception
(
"
Type error
!"
);
throw
std
::
exception
(
"
Can't convert, only support datetime to Datetime
!"
);
}
}
if
(
year
<
1400
)
{
if
(
year
<
1400
)
{
...
@@ -177,5 +177,47 @@ void export_Datetime(py::module& m) {
...
@@ -177,5 +177,47 @@ void export_Datetime(py::module& m) {
return
(
Py_hash_t
)
o
;
return
(
Py_hash_t
)
o
;
})
})
.
def
(
"__eq__"
,
(
bool
(
*
)(
const
Datetime
&
,
const
Datetime
&
))
&
operator
==
)
.
def
(
"__eq__"
,
[](
Datetime
*
date
,
const
py
::
object
&
pyd
)
{
auto
pydate
=
createFromPyDatetime
(
pyd
);
return
(
*
date
)
==
(
*
pydate
);
})
.
def
(
"__ne__"
,
(
bool
(
*
)(
const
Datetime
&
,
const
Datetime
&
))
&
operator
!=
)
.
def
(
"__ne__"
,
[](
Datetime
*
date
,
const
py
::
object
&
pyd
)
{
auto
pydate
=
createFromPyDatetime
(
pyd
);
return
(
*
date
)
!=
(
*
pydate
);
})
.
def
(
"__gt__"
,
(
bool
(
*
)(
const
Datetime
&
,
const
Datetime
&
))
&
operator
>
)
.
def
(
"__gt__"
,
[](
Datetime
*
date
,
const
py
::
object
&
pyd
)
{
auto
pydate
=
createFromPyDatetime
(
pyd
);
return
(
*
date
)
>
(
*
pydate
);
})
.
def
(
"__lt__"
,
(
bool
(
*
)(
const
Datetime
&
,
const
Datetime
&
))
&
operator
<
)
.
def
(
"__lt__"
,
[](
Datetime
*
date
,
const
py
::
object
&
pyd
)
{
auto
pydate
=
createFromPyDatetime
(
pyd
);
return
(
*
date
)
<
(
*
pydate
);
})
.
def
(
"__ge__"
,
(
bool
(
*
)(
const
Datetime
&
,
const
Datetime
&
))
&
operator
>=
)
.
def
(
"__ge__"
,
[](
Datetime
*
date
,
const
py
::
object
&
pyd
)
{
auto
pydate
=
createFromPyDatetime
(
pyd
);
return
(
*
date
)
>=
(
*
pydate
);
})
.
def
(
"__le__"
,
(
bool
(
*
)(
const
Datetime
&
,
const
Datetime
&
))
&
operator
<=
)
.
def
(
"__le__"
,
[](
Datetime
*
date
,
const
py
::
object
&
pyd
)
{
auto
pydate
=
createFromPyDatetime
(
pyd
);
return
(
*
date
)
<=
(
*
pydate
);
})
DEF_PICKLE
(
Datetime
);
DEF_PICKLE
(
Datetime
);
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
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