JavaScript — преобразование между v8 :: значение в дату

Я пишу аддон 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);
}
}

Спасибо за вашу помощь!

1

Решение

Вы можете привести значение 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);
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]