1

MSVC++6.0コンパイラのCプログラムでシステム日付を取得しようとしています。私はシステムコールを使用しています:

system( "date / T") (出力はたとえば2008年10月13日で、これは私のシステムで設定した形式の日付です)

ただし、これにより日付がi/oコンソールに出力されます。

上記のシステムコールによって返されたこの日付を取得し、コードで定義された文字列に文字列値として保存するにはどうすればよいですか?または

上記の形式(2008年10月13日または2008年10月13日)で日付を取得するために使用できる他のAPIはありますか?

-広告

4

4 に答える 4

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

int main() {

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

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

  if (result) {
    std::wcout << wszDate;
  }
}
于 2008-10-13T10:46:31.970 に答える
0

API関数を使用してこれを行うには、いくつかの方法があります。頭に浮かぶのは、strftimeGetDateFormatの2つです。

例を示したいのですが、現時点ではWin32コンパイラが手元にないのではないかと思います。うまくいけば、上記のドキュメントの例で十分です。

于 2008-10-13T10:45:37.243 に答える
0

Win32Time関数を読んでください; GetLocalTimeはあなたの友達かもしれません。標準のC時間関数、timeおよびstrftimeもあります。

将来の参考のために、Cプログラムでは、外部ユーティリティを呼び出してそのSTDOUTをキャプチャすることはほとんどの場合間違った答えです。

于 2008-10-13T10:49:32.993 に答える
0

ポインタをありがとう。

私はこれを使用しました、そしてそれは私の目的を果たしました:

#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(&ltime);
        today = localtime( &ltime );

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

    }

-広告

于 2008-10-13T11:28:27.407 に答える