Преобразование time_t в int

0

Я хочу преобразовать временную метку unix, возвращаемую time() как time_t, в целое число. Я искал решение в течение 20 минут и решил спросить здесь.

Каждое найденное мной решение не сработало. При попытке использовать from_time в int, я получаю ошибки:

long int t = static_cast<long int> time(NULL);

ошибка C2061: синтаксическая ошибка: идентификатор "время"

ошибка C2146: синтаксическая ошибка: отсутствует '(' перед идентификатором 'время'

Я очень новичок в C++. Заранее спасибо.

  • 0
    time_t - это 64-битное число на большинстве современных платформ, приведение к int приведет к потере данных. Также синтаксис static_cast<long int>(time(nullptr));
  • 0
    Сообщение об ошибке говорит вам, что именно не так.
Показать ещё 2 комментария
Теги:
timestamp
unix-timestamp
static-cast

3 ответа

3

time_t уже является целым числом, хотя он преднамеренно выбрал тот, который хранит всю систему системы UNIX, поэтому я бы рекомендовал против этого актера.

Однако, если вы настаиваете, вы на правильных строках, но просто неправильно выбрали синтаксис.

В общем, статическое литье e to T выглядит так:

static_cast<T>(e)  // <-- parentheses!

Так же, как сообщение об ошибке сообщило вам, вы "пропустили" ("перед идентификатором" время ").

Итак, ваше выражение будет:

long int t = static_cast<long int>(time(NULL));
2

Просто прочитайте ошибки и вставьте "Отсутствие (до времени идентификации":

long int t = static_cast<long int>(time(NULL));

static_cast требует, чтобы значение было заключено в круглые скобки.

  • 0
    Теперь я получаю эту ошибку: error C2064: term does not evaluate to a function taking 1 arguments
  • 0
    @ user3163947: Пожалуйста, не задавайте дополнительные вопросы в комментариях. Это не чат или доска обсуждений. Один вопрос там, один или несколько ответов на этот вопрос здесь.
0

просто добавьте круглые скобки вокруг времени (NULL):

long int t = static_cast<long int>(time(NULL));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню