Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
pybind11
Commits
cc982ac1
Unverified
Commit
cc982ac1
authored
Sep 13, 2020
by
Boris Staletic
Committed by
GitHub
Sep 13, 2020
Browse files
fix: allow assignment of time points of resolutions other than that of a system clock (#2481)
parent
38370a87
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
39 additions
and
1 deletion
+39
-1
include/pybind11/chrono.h
include/pybind11/chrono.h
+1
-1
tests/test_chrono.cpp
tests/test_chrono.cpp
+28
-0
tests/test_chrono.py
tests/test_chrono.py
+10
-0
No files found.
include/pybind11/chrono.h
View file @
cc982ac1
...
...
@@ -140,7 +140,7 @@ public:
}
else
return
false
;
value
=
system_clock
::
from_time_t
(
std
::
mktime
(
&
cal
))
+
msecs
;
value
=
time_point_cast
<
Duration
>
(
system_clock
::
from_time_t
(
std
::
mktime
(
&
cal
))
+
msecs
)
;
return
true
;
}
...
...
tests/test_chrono.cpp
View file @
cc982ac1
...
...
@@ -12,6 +12,24 @@
#include <pybind11/chrono.h>
#include <chrono>
struct
different_resolutions
{
using
time_point_h
=
std
::
chrono
::
time_point
<
std
::
chrono
::
system_clock
,
std
::
chrono
::
hours
>
;
using
time_point_m
=
std
::
chrono
::
time_point
<
std
::
chrono
::
system_clock
,
std
::
chrono
::
minutes
>
;
using
time_point_s
=
std
::
chrono
::
time_point
<
std
::
chrono
::
system_clock
,
std
::
chrono
::
seconds
>
;
using
time_point_ms
=
std
::
chrono
::
time_point
<
std
::
chrono
::
system_clock
,
std
::
chrono
::
milliseconds
>
;
using
time_point_us
=
std
::
chrono
::
time_point
<
std
::
chrono
::
system_clock
,
std
::
chrono
::
microseconds
>
;
time_point_h
timestamp_h
;
time_point_m
timestamp_m
;
time_point_s
timestamp_s
;
time_point_ms
timestamp_ms
;
time_point_us
timestamp_us
;
};
TEST_SUBMODULE
(
chrono
,
m
)
{
using
system_time
=
std
::
chrono
::
system_clock
::
time_point
;
using
steady_time
=
std
::
chrono
::
steady_clock
::
time_point
;
...
...
@@ -53,4 +71,14 @@ TEST_SUBMODULE(chrono, m) {
m
.
def
(
"test_nano_timepoint"
,
[](
timestamp
start
,
timespan
delta
)
->
timestamp
{
return
start
+
delta
;
});
// Test different resolutions
py
::
class_
<
different_resolutions
>
(
m
,
"different_resolutions"
)
.
def
(
py
::
init
<>
())
.
def_readwrite
(
"timestamp_h"
,
&
different_resolutions
::
timestamp_h
)
.
def_readwrite
(
"timestamp_m"
,
&
different_resolutions
::
timestamp_m
)
.
def_readwrite
(
"timestamp_s"
,
&
different_resolutions
::
timestamp_s
)
.
def_readwrite
(
"timestamp_ms"
,
&
different_resolutions
::
timestamp_ms
)
.
def_readwrite
(
"timestamp_us"
,
&
different_resolutions
::
timestamp_us
)
;
}
tests/test_chrono.py
View file @
cc982ac1
...
...
@@ -200,3 +200,13 @@ def test_nano_timepoint():
time
=
datetime
.
datetime
.
now
()
time1
=
m
.
test_nano_timepoint
(
time
,
datetime
.
timedelta
(
seconds
=
60
))
assert
(
time1
==
time
+
datetime
.
timedelta
(
seconds
=
60
))
def
test_chrono_different_resolutions
():
resolutions
=
m
.
different_resolutions
()
time
=
datetime
.
datetime
.
now
()
resolutions
.
timestamp_h
=
time
resolutions
.
timestamp_m
=
time
resolutions
.
timestamp_s
=
time
resolutions
.
timestamp_ms
=
time
resolutions
.
timestamp_us
=
time
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