○現在時刻を取得する

■年月日を求める

#include <stdio.h>
#include <time.h>
int main()
{
     time_t now = time(NULL);
     struct tm *pnow = localtime(&now);
     char week[][3] = {"日","月","火","水","木","金","土"};

     printf("今日は%2d年%2d月%2d日(%s)です。\n",
        pnow->tm_year+1900,
	    pnow->tm_mon + 1,
	    pnow->tm_mday,
	    week[pnow->tm_wday]);

     return 0;
}

実行結果 ただ今の日付が表示されます

今日は2006年12月 1日(金)です。

■時分秒を求める

#include <stdio.h>
#include <time.h>

int main(){

     time_t now = time(NULL);
     struct tm *pnow = localtime(&now);

	char buff[128]="";

	sprintf(buff,"%d:%d:%d",pnow->tm_hour,pnow->tm_min,pnow->tm_sec);
	printf(buff);
	getchar();

	return 0;
}

実行結果 ただ今の時間が表示されます

4:56:55

■時間の計算をする

	//FILETILE 構造体は 1601年1月1日から 100 ナノ秒間隔の数を表す
	//二つの 32 ビットメンバを持つ 64 ビットの値です
	//UInt64 値型は、値が 0 から 18,446,744,073,709,551,615 までの範囲の符号なし整数を表します。

	UINT64 SEC=10*1000*1000;//分解能100ナノのFILETIMEの1秒
	UINT64 MINUT = SEC*60;//1分
	UINT64 HOUR=MINUT*60;//1時間
	UINT64 time;
	SYSTEMTIME st,st2;
	GetLocalTime(&st);//現在の時刻を取得
	SystemTimeToFileTime(&st,(FILETIME *)&time);//時間→数値

	time+=HOUR;//1時間を追加
	time+=MINUT*10;//10分を追加

	FileTimeToSystemTime((FILETIME *)&time,&st2);//数値→時間

	TRACE("%d:%d:%d\n",st2.wHour,st2.wMinute,st2.wSecond);//現在時刻の1時間10分後が表示



▲トップページ > Windows と C++