C言語はシステム時間を獲得するいくつかの方法です.

7362 ワード

C言語ではどのように時間を取得しますか?精度はどうですか?1タイムを使うttime(timetut*timer)は正確に秒2までclock_を使います.tclock()で得られたのはCPU時間が正確に1/CLOCKS_までである.PER_SEC秒3計算時間差はdoubledifftimeを使います.
C言語で時間はどうなりますか?精度はどうなりますか?
1タイムスタンプを使って、秒まで精確にします.
2 clockcut clock()を使用して得られたのはCPU時間が1/CLOCKScuuPER SEC秒まで正確であることです.
3計算時間差はdouble difftimeを使います.
4 DWORD GetTickCount()を使ってミリ秒まで正確です.
5 MFCのCTimeクラスを使用すれば、CTime:GetCurrrentTime()を使って秒まで正確にすることができます.
6高精度時間を取得するには、使用できます.
BOOL Query Performanc Frequency
システムのカウンタの周波数を取得します.
BOOL Query PerformancCounter(LARGEuINTEGER*lpPerformancCount)
カウンタの値を取得します.
そして2回のカウンターの差をFrequencyで割ると時間がかかります.
// 7 Multimedia Timer Functions
// The following functions are used with multimedia timers.
timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime
//*********************************************************************
//   C              
 
一.time関数
time(&rawtime)関数は、現在の時間を1970年1月1日から秒単位でrawtimeに保存します.
#include <stdio.h>
#include <time.h>
void main ()
{
 time_t rawtime;
 struct tm * timeinfo;
 time ( &rawtime );
 timeinfo = localtime ( &rawtime );
 printf ( "\007The current date/time is: %s", asctime (timeinfo) );
}
󑧙include-必要な時間関数ヘッダファイル
タイムタイプ(time.h定義はtypedef long timetut;元にさかのぼるとtimetaはlong)
struct tm--時間構造、time.h定義は以下の通りです.
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
タイム(&rawtime)--取得時間は、秒で計算し、1970年1月1日からrawtimeに保存します.
locatime(&rawtime)--現地時間に変換し、tm時間構造
asctime()--標準ASCII時間フォーマットに移行する:
日曜日:分:秒年
二.clock関数、
クローク関数を使って、システムが起動した後のミリ秒レベルの時間を得て、CLOCK SuPER SECで除算すれば、「秒」に換えられます.標準c関数です.
#include <stdio.h>
#include <time.h>

void main()
{
	clock_t t = clock();
	long sec = t / CLOCKS_PER_SEC; 
	printf("color section time %d", sec);
}
彼は時計周期を記録しています.実現には正確ではないようです.テスト検証が必要です.
三.gettime(&t);tc 2.0のtime構造にはミリ秒の情報が含まれていると言われています.
#include<stdio.h>
#include<time.h>
int main(void)
{
	struct time t;
	gettime(&t);
	printf("The current time is: %2d:%02d:%02d.%02d
", t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund); return 0; }
timeは構成体で、メンバ関数tiuhundはミリ秒です.
四.GetTickCount()、これはwindowsの中でよくプログラムの運行時間を計算する関数です.
DWORD dwStart=GetTickCount()
//ここであなたのプログラムコードを実行します.
DWORD dwEnd=GetTickCount()
あなたのプログラムの実行時間はミリ秒単位です.
この関数は55 msまで正確で、1つのtickは55 msです.
五.t imeGetTime()t,imeGetTime()は基本的にGetTickCount()に等しいが、精度はより高い.
DWORD dwStart=timeGetTime()
//ここであなたのプログラムコードを実行します.
DWORD dwEnd=timeGetTime()
あなたのプログラムの実行時間はミリ秒単位です.
戻り値の単位はmsですが、精度は10 msしかないと言われています.
************************************************************************************************************************************************************************************ユニクス
璣嗳unix時間関連も標準倉庫です.
****************************************************************
1.timegm関数は、structm構造をtimegaut構造に変更するだけで、タイムゾーン情報を使用しません.
timet timegm(structm*tm)
2.mktime使用タイムゾーン情報
timemktime(structm*tm)
timelocal関数はGNU拡張のposix関数mktimeに相当します.
timemut timelocal(structm*tm)
3.gmtime関数はtimeut構造をstruct tm構造に変更するだけで、タイムゾーン情報を使用しません.
structm*gmtime;
4.locatime使用時区情報
structm*locatime;
1.時間取得時間、stime設定時間
timelt;
t=time(&t);
2.stimeそのパラメータはGMT時間であるべきで、ローカルタイムゾーンによってローカル時間に設定される.
int stime(timemut*tp)
3.UTC=trueは夏時間を表す.
4.ファイルの修正時間などの情報は全部GMT時間で保存します.異なるシステムは修正時間を得た後、locatimeを通じて現地時間に変換します.
5.タイムゾーンの設定はセットで設定することを推奨します.
6.タイムゾーンを設定してもいいです.もっと/etc/syssconfig/clockの設定をしてからln-fs/usr/share/zoneinfo/xxx/xxx/etc/locatimeを再効果的にするには、68年の範囲、つまりmktimeは1970-2038の範囲に戻るしかないです.
あなたのシステムがtimemut 64があるかどうか見てください.もっと大きな時間範囲を表しています.
/*******************************************************************************************************を***************************を**して、Windowsをダウンタウンしています.
璜嗳Windowの中のいくつかは違っています.
****************************************************************
一.CTime()類
VCプログラミングは、一般的にCTimeクラスを使用して、現在の日付と時間を取得します.
CTime t=GetCurentTime()
SYSTEMTIME構造にはミリ秒情報が含まれています.
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
SYSTEMTIME t1;
GetSystemTime(&t1)
CTime curTime(t1);
WORD ms = t1.wMilliseconds;
SYSTEMTIME sysTm;
::GetLocalTime(&sysTm);
 time.h  _strtime() //   windows  
char t[11];
_strtime(t);
puts(t);  
現在の日付と時刻を取得します.
CTime tm=CTime:GetCurrenntTime()
CString str=tm.Format(「%Y-%m-%d」)
VCでは、CTimeの時間の種類を利用して、システムの現在の日付を取得できます.具体的な使い方は以下の通りです.
CTime t=CTime:GetCurentTime()//取得システム日付は、tに格納されます.
int d=t.GetDay()//現在の日付を取得する
int y=t.GetYear()//現在の年を取得する
int m=t.GetMonth()//現在の月を取得する
int h=t.GetHour()//現在はいつですか?
int mm=t.GetMinute()//取得現在分
int s=t.Get Second()//現在の秒を取得する
int w=t.GetDayOfWeek()//取得曜日、注意1は日曜日、7は土曜日です.
二.CTimeSpan類
2つの時間の差を計算するなら、CTimeSpan類を使用することができます.具体的な使い方は以下の通りです.
CTime t 1(1999、3、19、22、15、0)
CTime t=CTime:GetCurentTime()
CTimeSpan span=t-t 1;/現在のシステム時間と時間t 1の間隔を計算する.
int iDay=span.GetDays()//取得までの期間の間隔は何日間ですか?
int iHour=span.GetTotalHours()//取得は全部で何時間ですか?
int iMin=span.GetTotalMinutes()//取得までの時間はどれぐらいですか?
int iSec=span.GetTotal Seconds()//取得は全部で何秒ですか?
三._timeb()関数
_timeb定義はSYS\TIMEB.Hで、四つのfieldsがあります.
dstflag
millitm
time
timezone
void _ftime( struct _timeb *timeptr );
struct _timeb timebuffer;
_ftime( &timebuffer ); 
現在の時間を取ります.文書ではmsまでできます.誰かがテストします.16 msまでしか行けないようです.
四.タイマーの設定
定義TIMER ID
シデfine TIMERIDUJISUANFANSHI 2
適切な場所に時計を設置し、その役割を開始する必要があるところ.
SetTimer(TIMERIDUJISUANFANSHI、200、NULL);
タイマーがいらない時は時計を壊します.
KillTimer(TIMERIDUJISUANFANSHI);
VCプログラムに対応するメッセージマップ
void CJisuan::OnTimer(UINT nIDEvent)
{switch(nIDEvent)}
---------------------------------------------------------------------------------------
##          ---------------------------------------windows
SYSTEMTIME m_myLocalTime,*lpSystemTime;
m_myLocalTime.wYear=2003;
m_myLocalTime.wM;
m_myLocalTime.wDay=1;
m_myLocalTime.wHour=0;
m_myLocalTime.wMinute=0;
m_myLocalTime.wSec;
m_myLocalTime.wMillisec;
lpSystemTime=&m_myLocalTime;;
if( SetLocalTime(lpSystemTime) ) //     SetSystemTime( )   
MessageBox("OK !");
else
MessageBox("Error !");
SYSTEMTIME m_myLocalTime,*lpSystemTime;
m_myLocalTime.wYear=2003;
m_myLocalTime.wM;
m_myLocalTime.wDay=1;
lpSystemTime=&m_myLocalTime;;
if( SetDate(lpSystemTime) ) //     SetSystemTime( )   
MessageBox("OK !");
else
MessageBox("Error !");