diff --git a/ecmascript/napi/include/jsnapi.h b/ecmascript/napi/include/jsnapi.h old mode 100644 new mode 100755 index 0b7fa30807f82ca56a14157a1f54f985e9a643d8..9cd21ea29a849c297b3ff29c2d651df93e355865 --- a/ecmascript/napi/include/jsnapi.h +++ b/ecmascript/napi/include/jsnapi.h @@ -673,7 +673,9 @@ public: class PUBLIC_API DateRef : public ObjectRef { public: + static Local New(const EcmaVM *vm, double time); Local ToString(const EcmaVM *vm); + double GetTime(); }; class PUBLIC_API MapRef : public ObjectRef { diff --git a/ecmascript/napi/jsnapi.cpp b/ecmascript/napi/jsnapi.cpp old mode 100644 new mode 100755 index d65b55db455f7a4a461e878c576a9bafcd604fc8..e2ff0af7125b5607aa7a5c73dfd192cd1be8131a --- a/ecmascript/napi/jsnapi.cpp +++ b/ecmascript/napi/jsnapi.cpp @@ -1325,6 +1325,18 @@ Local RegExpRef::GetOriginalSource(const EcmaVM *vm) return JSNApiHelper::ToLocal(sourceHandle); } +Local DateRef::New(const EcmaVM *vm, double time) +{ + JSThread *thread = vm->GetJSThread(); + ObjectFactory *factory = vm->GetFactory(); + JSHandle globalEnv = vm->GetGlobalEnv(); + JSHandle dateFunction = globalEnv->GetDateFunction(); + JSHandle dateObject = + JSHandle::Cast(factory->NewJSObjectByConstructor(JSHandle(dateFunction), dateFunction)); + dateObject->SetTimeValue(thread, JSTaggedValue(time)); + return JSNApiHelper::ToLocal(JSHandle(dateObject)); +} + Local DateRef::ToString(const EcmaVM *vm) { JSThread *thread = vm->GetJSThread(); @@ -1338,6 +1350,15 @@ Local DateRef::ToString(const EcmaVM *vm) return JSNApiHelper::ToLocal(dateStrHandle); } +double DateRef::GetTime() +{ + JSHandle date(JSNApiHelper::ToJSHandle(this)); + if (!date->IsDate()) { + LOG(ERROR, RUNTIME) << "Not a Date Object"; + } + return date->GetTime().GetDouble(); +} + int32_t MapRef::GetSize() { JSHandle map(JSNApiHelper::ToJSHandle(this));