Skip to content

Commit 5ecb616

Browse files
committed
Add Date::New overload for a std::chrono::system_clock::time_point
1 parent 86a0524 commit 5ecb616

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

napi-inl.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
#endif // NAPI_HAS_THREADS
2121
#include <type_traits>
2222
#include <utility>
23+
#if __cplusplus >= 201103L
24+
#include <chrono>
25+
#endif
2326

2427
#if defined(__clang__) || defined(__GNUC__)
2528
#define NAPI_NO_SANITIZE_VPTR __attribute__((no_sanitize("vptr")))
@@ -1199,6 +1202,15 @@ inline Date Date::New(napi_env env, double val) {
11991202
return Date(env, value);
12001203
}
12011204

1205+
#if __cplusplus >= 201103L
1206+
inline Date Date::New(napi_env env, std::chrono::system_clock::time_point tp) {
1207+
using namespace std::chrono;
1208+
auto ms = static_cast<double>(
1209+
duration_cast<milliseconds>(tp.time_since_epoch()).count());
1210+
return Date::New(env, ms);
1211+
}
1212+
#endif
1213+
12021214
inline void Date::CheckCast(napi_env env, napi_value value) {
12031215
NAPI_CHECK(value != nullptr, "Date::CheckCast", "empty value");
12041216

napi.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -685,6 +685,12 @@ class Date : public Value {
685685
double value ///< Number value
686686
);
687687

688+
/// Creates a new Date value from a std::chrono::system_clock::time_point.
689+
static Date New(
690+
napi_env env, ///< Node-API environment
691+
std::chrono::system_clock::time_point tp ///< Time point value
692+
);
693+
688694
static void CheckCast(napi_env env, napi_value value);
689695

690696
Date(); ///< Creates a new _empty_ Date instance.

0 commit comments

Comments
 (0)