- 締切済み
現在時刻をミリ秒まで取得
お疲れ様です 現在時刻をミリ秒まで取得がしたいです。 今はtime_tを使って秒までは取得したのですがミリ秒は構造体にないらしく同じようにとってはこれないのでしょうか? また別のやり方だとどんなのがあるか教えてください。 現在は下記のように取得してyyyymmddhhmmssの形を作ってます。 これをyyyymmddhhmmsssssのようにミリ秒を増やしたたいのです。 長くなってしまいましたがよろしくお願いします time_t timer; time(&timer);/* 現在の時刻を取得 */ struct tm *local; local =localtime(&timer);/* 地方時の構造体に変換 */ CString time; //CString用の時間 time.Format("%4d%02d%02d%02d%02d%02d" ,local->tm_year + 1900,/* 年 */ local->tm_mon+1,/*月は0から始まるので1を+*/ local->tm_mday,/* 日 */ local->tm_hour,/* 時 */ local->tm_min,/* 分 */ local->tm_sec);/* 秒 */
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- taka_n_jp
- ベストアンサー率0% (0/0)
MFCでは、CFileTimeクラスが使えそうです。 CFileTime myFT; myFT = CFileTime::GetCurrentTime(); CFileTimeSpanで、相対時間も取れそうです。
- mitoneko
- ベストアンサー率58% (469/798)
MFCでの時刻の扱いはtoginoさんの答えどおりです。 補足しておくとMFC環境で組まれているならWin32 API関数は直接利用することができます。
- togino
- ベストアンサー率75% (97/129)
> MFCで標準クラスはないのでしょうか? MFC の CTime では、1970年1月1日から経過した 『秒』で管理されています。 ミリ秒まで取得する場合は、mitoneko さんの回答どおり SYSTEMTIME st; GetSystemTime(&st); とする必要があります。 --- ちなみに MFC を使いますと質問文のプログラムは CTime timeNow = CTime::GetCurrentTime(); CString sTime = timeNow.Format("%Y%m%d%H%M%S"); とシンプルになりますよ~
- mitoneko
- ベストアンサー率58% (469/798)
環境がなんなのか、明示がないので、答えようもないところがあるのですが・・・ もし、Win32環境でお望みでしたら、次のAPI関数を利用されてはどうですか? Void GetLocalTime(LPSYSTEMTIME lpSystemTime) typedef struct _SYSTEMTIME { // st WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds; } SYSTEMTIME; LPSYSTEMTIMEは、SYSTEMTIMEへのポインタのtypedefです。 ちなみに、kernel32で定義されています。 挙動は・・・・もう定義を見て頂ければ、そのまんまです(苦笑) 環境がunixですといわれるとずっこけですので、自信なしということで(笑)
補足
環境はMicrosoft Visual C++ 6.0を 使用しています。 MFCで標準クラスはないのでしょうか?