Я пишу аддон C ++ на v8, используя Nan. Один из аргументов конструктора имеет тип 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 с помощью v8 :: Дата :: Cast функция.
Оттуда вы можете извлечь количество миллисекунд, начиная с эпохи Unix (1 января 1970 г.) с NumberValue
функция.
Затем преобразовать это число в станд :: time_t объект, приведя количество секунд static_cast<time_t>(millisSinceEpoch/1000)
От time_t
получить структура * тм с местное время функция.
Затем, наконец, извлекаем значения день / месяц / год:
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);
}
}
Других решений пока нет …