Получение системной даты в MSVC 6.0

#windows #date #system

Вопрос:

Я пытаюсь получить системную дату в программе на C на компиляторе MSVC 6.0. Я использую системный вызов:

система(«дата /T») (вывод, например, 13 октября-08, что является датой в моей системе в заданном мной формате)

но при этом дата выводится на консоль ввода-вывода.

Как я могу принять эту дату, возвращенную приведенным выше системным вызовом, и сохранить ее в виде строкового значения в строке, определенной в моем коде? Или

Есть ли какой-либо другой API, который я могу использовать для получения даты в вышеупомянутом формате (13-Окт-08 или 13-10-08) ?

-ОБЪЯВЛЕНИЕ

Ответ №1:

 #include <windows.h>
#include <iostream>

int main() {

  SYSTEMTIME systmDateTime = {};
  ::GetLocalTime(amp;systmDateTime);

  wchar_t wszDate[64] = {};
  int const result = ::GetDateFormatW(
    LOCALE_USER_DEFAULT, DATE_SHORTDATE,
    amp;systmDateTime, 0, wszDate, _countof(wszDate));

  if (result) {
    std::wcout << wszDate;
  }
}
 

Ответ №2:

Есть несколько способов сделать это с помощью функций API, два из которых сразу приходят на ум: strftime и GetDateFormat.

Я хотел бы привести примеры, но, боюсь, в данный момент у меня нет под рукой компилятора Win32. Надеюсь, примеров в приведенной выше документации будет достаточно.

Ответ №3:

Ознакомьтесь с функциями времени Win32; GetLocalTime может быть вашим другом. Существуют также стандартные функции времени C, время и strftime.

Для дальнейшего использования в программе на языке Си почти всегда неправильным ответом является вызов внешней утилиты и запись ее вывода.

Ответ №4:

Спасибо за указания.

Я использовал это, и это послужило моей цели:

 #include <time.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/timeb.h>
#include <string.h>
    int main()

    {  

        char tmpbuf[128];

        time_t ltime;

        struct tm *today;

        _strdate( tmpbuf );
        printf("n before formatting date is %s",tmpbuf);  

        time(amp;ltime);
        today = localtime( amp;ltime );

        strftime(tmpbuf,128,"%d-%m-%y",today);
        printf( "nafter formatting date is %sn", tmpbuf );

    }
 

-ОБЪЯВЛЕНИЕ