Как разделить дату / время в C ++? - PullRequest
0 голосов
/ 25 мая 2011

Я хотел бы разбить строку даты / времени (например, 1/08/1957/11:20:01 или любой другой формат времени) на месяц, час, секунду, минуту. Проблема в том, что, во-первых, я не знаю, как определить тип времени, которое можно разделить.

Должен ли я написать:

time_t now=1081987112001 s; //it is not correct. why? what's the c++ time data format?
struct tm* tm = localtime(&now);

cout << "Today is "
     << tm->tm_mon+1 // month
     << "/" << tm->tm_mday // day
     << "/" << tm->tm_year + 1900 // year with century
     << " " << tm->tm_hour // hour
     << ":" << tm->tm_min // minute
     << ":" << tm->tm_sec; // second

Но это не правильно. Может кто-нибудь привести пример с методом, который берет значение времени, заданное с клавиатуры, и разбивает его?

Какие типы форматов времени данных может принимать c ++?

Ответы [ 3 ]

3 голосов
/ 25 мая 2011

Если вы хотите взять время из пользовательского ввода (что, как вам кажется, нужно) и преобразовать его в действительный struct tm, вы можете использовать strptime() из time.h.

Так, например, если у вас было:

char user_input_time[] = "25 May 2011 10:15:45";

struct tm;
strptime(user_input_time, "%d %b %Y %H:%M:%S", &tm);

printf("year: %d; month: %d; day: %d;\n", tm.tm_year, tm.tm_mon, tm.tm_mday);
1 голос
/ 25 мая 2011

time_t является целым числом и подсчитывает количество секунд, прошедших с начала эпохи UNIX: 1 января 1970 года, 00:00:00. Вы определенно не можете написать, что вы сделали, чтобы присвоить это значение.

Вы должны использовать функции localtime или gmtime для преобразования между удобным значением time_t и struct tm, которые имеют различную информацию о дне, месяце, часах и т. Д.

Вы также можете использовать функции strftime и strptime для преобразования между символьной строкой и struct tm.

0 голосов
/ 25 мая 2011
#include <cstdio>
#include <iostream>
#include <string>
...
{
  std::string date_time;
  std::getline(std::cin, date_time);
  sscanf(date_time.c_str(), "%d/%d/%d/%d:%d:%d", &month, &date, &year, &hour, &minute, &second);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...