こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

現在時刻をミリ秒まで取得

お疲れ様です

現在時刻をミリ秒まで取得がしたいです。
今は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);/* 秒 */

投稿日時 - 2004-08-03 16:20:22

QNo.949646

困ってます

このQ&Aは役に立ちましたか?

24人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

MFCでは、CFileTimeクラスが使えそうです。

CFileTime myFT;
myFT = CFileTime::GetCurrentTime();

CFileTimeSpanで、相対時間も取れそうです。

参考URL:http://msdn.microsoft.com/ja-jp/library/37583efy%28v=vs.80%29.aspx

投稿日時 - 2011-03-04 18:04:02

ANo.3

MFCでの時刻の扱いはtoginoさんの答えどおりです。
補足しておくとMFC環境で組まれているならWin32 API関数は直接利用することができます。

投稿日時 - 2004-08-04 18:14:13

ANo.2

> 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");

とシンプルになりますよ~

投稿日時 - 2004-08-04 02:17:58

ANo.1

 環境がなんなのか、明示がないので、答えようもないところがあるのですが・・・
 もし、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ですといわれるとずっこけですので、自信なしということで(笑)

投稿日時 - 2004-08-03 16:51:17

補足

環境はMicrosoft Visual C++ 6.0を
使用しています。
MFCで標準クラスはないのでしょうか?

投稿日時 - 2004-08-03 17:25:32

あなたにオススメの質問