v8::value 到日期之间的转换

Conversion between v8::value to date

我正在使用 nan 在 v8 上编写 C++ 插件。构造函数的参数之一是 Date 类型。 IsDate returns 是的,但我不知道如何将它转换为 C++ 日期对象以获得年月日等。

void NodeObject::New(const Nan::FunctionCallbackInfo<v8::Value>& info) {
    if(info[0]->IsDate()) {
        //convert and get year, month and day
        boost::gregorian::date d(2016 , 1 ,1);
        double price = getPrice(date);
    }
}

感谢您的帮助!

您可以使用 v8::Date::Cast 函数将 v8 值转换为日期对象。

从那里您可以使用 NumberValue 函数提取自 Unix 纪元(1970 年 1 月 1 日)以来的毫秒数。

然后通过转换秒数 static_cast<time_t>(millisSinceEpoch/1000)

将此数字转换为 std::time_t 对象

time_t 得到一个 struct *tm with the localtime 函数。

然后最终提取 day/month/year 值:

void NodeObject::New(const Nan::FunctionCallbackInfo<v8::Value>& info) {
  if(info[0]->IsDate()) {
    double millisSinceEpoch = v8::Date::Cast(*info[0])->NumberValue(); 
    std::time_t t = static_cast<time_t>(millisSinceEpoch/1000);

    struct tm* ltime = localtime(&t);
    int year = ltime->tm_year + 1900;
    int month = ltime->tm_mon + 1;
    int day = ltime->tm_mday;

    boost::gregorian::date d(year, month, day);  
    double price = getPrice(date);         
  }
}