我正在使用nan在v8上编写C++插件。构造函数的参数之一是Date类型。IsDate返回true,但我不知道如何将其转换为C++Date对象以获取年、月、日等
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 Value强制转换为Date对象。
从中,您可以使用NumberValue
函数提取自Unix epoch(1970年1月1日)以来的毫秒数。
然后通过投射秒数static_cast<time_t>(millisSinceEpoch/1000)
将该数字转换为std::time_t对象
从time_t
获取一个带有localtime函数的struct*tm。
然后最后提取日/月/年的值:
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);
}
}