Получать дату системы

Я делаю программу в #C для университета и нуждаюсь в том, чтобы получить настоящую дату системы, чтобы знать, в котором момент зарегистрировал человек.

До настоящего времени чтобы брать дату у меня есть это:

time_t tiempo = time(NULL);//variables donde guardo el valor de la funcion time. 
    struct tm *tlocal = localtime(&tiempo); //estructura donde obtengo el tiempo 
    char output[10]; //array donde guardo la fecha
    strftime(output,10,"%d/%m/%y",tlocal); //formato para guardar la fecha obtenido en *tlocal como dd/mm/yyyy
    printf("%s\n",output);

Проблема это у меня есть, в котором делая это дату сохраняют я правильно, но у одинокого года есть 2 цифры, а именно, вместо того, чтобы сохранять 10.04.2017 сохраняй 10/04/17.

Я искал из-за Интернета, как сохранение полной даты со всеми цифрами и прочитал, что если в функции strftime я помещаю y в прописных буквах он сохраняет мне 4 цифры года, но я это протестировал и оно я не функционирует.

Какая-то идея, чтобы получать дату системы в формате dd / мм / yyyy?.

4
задан 13.04.2017, 13:54
3 ответа
char output[10];
strftime(output,10,"%d/%m/%y",tlocal);

Дата в формате dd / мм / YYYY занимает:

  • 2 dГ-gitos (dГ - в)
  • 2 dГ-gitos в (месяце)
  • 4 dГ-gitos (aГ±o)
  • 2 dГ-gitos (разделители)
  • 1 dГ-gito (конец цепи)

В общем количестве 11 символов... и твоя договоренность - Гєnicamente 10.

то, что estГЎ происходя является, что обнаруживает strftime, что он не будет вводить его aГ±o и это опустит, чтобы не писать в зонах памяти, что они не принадлежат ему твоей договоренности.

Решение - это такое простое как изменять tamaГ±o буфер для того, чтобы допустил один mГ-nimo 11 символов):

char output[11];
strftime(output,11,"%d/%m/%Y",tlocal);
6
ответ дан 24.11.2019, 10:02
  • 1
    Солитеры razó n. Не я cogí в хорошо дату, потому что не cabí в в array характеров после того, как были больше pequeñ или. solució n несомненно он состоял в том, чтобы увеличивать array в 11 характеров вместо в 10. Большое спасибо. – JoseCa 18495 13.04.2017, 13:46

Ты можешь использовать заголовок <chrono> C ++ 11, чтобы получать настоящий момент и это печатать из-за консоли asГ-:

auto now = std::chrono::system_clock::now();
auto time = std::chrono::system_clock::to_time_t(now);

std::cout << std::put_time(std::localtime(&time), "%d-%m-%Y");

Восток cГіdigo требует заголовка <chrono>, чтобы соглашаться на прибыли времени и заголовок <iomanip>, чтобы преобразовывать стоимость времени в текст (ademГЎs <iostream>, чтобы писать в консоли, но этом уже dependerГЎ твоей необходимости).

4
ответ дан 24.11.2019, 10:02

LibrerГ-схвати их std C они приносят ее нам funciГіn time(). TambiГ©n возможно форматировать в Horas:Minutos:Segundos используя функции C.

time_t  timev;
time(&timev);
1
ответ дан 24.11.2019, 10:02
  • 1
    Deberí схвати считать расширять твой ответ añ adiendo ejempo немного má s я завершаю. ¿ Có mo произведи текст с датой начиная с возвращенного из-за funció n time()? ¿ Ты будешь способствовать тому, чтобы это исследовал пользователь? ¿ И qué случается со всеми теми, кто происходили бы despué s со сходным сомнением? – eferion 11.04.2017, 14:03