MFC取得時間

6941 ワード

MFC現在時刻取得
windows相関2009-10-05 23:22:16阅读222评论0号号码:大中小、使用MFC可以用以下コード得到
CTime time = CTime::GetCurrentTime();//CTimeオブジェクトint m_を作成するnYear = time.GetYear();//年int m_nMonth = time.GetMonth();//月int m_nDay = time.GetDay();//日int m_nHour = time.GetHour();//時間int m_nMinute = time.GetMinute();//分int m_nSecond = time.GetSecond();////秒
CTime::Format関数を使用して、CTimeオブジェクトを文字列オブジェクトに変換することもできます.たとえば、CString m_strTime = time.Format("%Y-%m-%d %H:%M:%S");
実行結果:m_strTimeは2001-8-1 12:11:05
二、GetSystemTime()というAPI関数を用いてシステム時間を得る
SYSTEMTIME ti;GetSystemTime(&ti);////SYSTEMTIME構造体のメンバーを読み取ることで直接時間typedef struct_を得ることができます.SYSTEMTIME {     WORD wYear;     WORD wMonth;     WORD wDayOfWeek;     WORD wDay;     WORD wHour;     WORD wMinute;     WORD wSecond;     WORD wMilliseconds; } SYSTEMTIME, *PSYSTEMTIME;
例:ti.wMilliseconds;ミリ秒の時間が得られます
 
以下は転載です:CTimeとその他の時間差
一、DateTimePickerコントロール
DateTimePickerコントロールを参照し、変数m_を関連付けます.dateはDateTimeCtrlタイプで、応答イベントに次のコードを追加します.
   CTime tm;   m_date.GetTime(tm);   CString strDate=tm.Format("%Y-%m-%d");
手に入れることができます...しかし、なぜかこれはVcのバージョンの問題と関係があり、最初は私が使っていたバージョンがいつも間違っていたり、srtDateが空だったり、ユーザーが選択した日付ではなかったりして、VCのバージョンを変えたら正しいデータが得られました...
また、CTimeタイプの変数を関連付けると上記の問題も解決できますが、初期化の日付は1970-01-01で、上記の方法で初期化された日付は現在の日付です...従って、ユーザの必要な設定に応じて、いずれかの方法を選択して解決することができる...
二、CTimeSpan取得時間差
2つのCTimeのような2つの時間差を取得するには、MFCのCTimeSpanクラスを使用します.
CTime time1 = CTime::GetCurrentTime(); ...    ... CTime time2 = CTime::GetCurrentTime(); //   CTime    CTimeSpan CTimeSpan timeSpan = time2 - time1; //        int nTSeconds = timeSpan.GetTotalSeconds();
GetTotalSecondsとGetSecondsの違いに注意:GetTotalSecondsは合計秒数を返し、GetSecondsは常に60未満を返します.たとえば、時間が100秒経過した場合、GetTotalSecondsは100を返し、GetSecondsは60秒が1分になったため、GetMinutesで1、すなわち1分40秒を返します.その他の類似関数:
GetDays(); //      GetHours(); //      (-23 23  ) GetTotalHours(); //         GetMinutes(); //      (-59 59  ) GetTotalMinutes(); //         GetSeconds(); //     (-59 59  ) GetTotalSeconds(); //         、CTime  

1.
     m_begintime=CTime(2004,1,1,0,0,0,-1);// year,month,day,hour,minite,second
     m_endtime =CTime::GetCurrentTime();//
2.
CTimeSpan span;
span=time1-time2;
.
span.GetHours().
3.access
DateDiff() , access
CString timesql;
timesql.Format(" Where DateDiff('d',%s,'%s')<=0"," ",m_begintime.Format("%Y-%m-%d"));

4 (odbc)
    CDBVariant var;
      recset.GetFieldValue(i,var);
     s.Format("%d-%d-%d",(var.m_pdate)->year,(var.m_pdate)->month,
      (var.m_pdate)->day);
5.CTime CString
:
   m_begintime.Format("%Y-%m-%d");//2004-10-03

6.CString CTime
    //s="2004-10-5"
   int first=s.Find('-');
    int second=s.Find('-',first+1);
    int year=atoi(s.Left(4));
    int month=atoi(s.Mid(first+1,second-first+1));
    int day=atoi(s.Mid(second+1,s.GetLength()-second-1));
    CTime temp(year,month,day,0,0,0);
7. CString
// 2004-01-13 ch
bool IsDate(CString str,char ch)
{
if(str.IsEmpty()) return false;
//
int first=str.Find(ch);
int second=str.Find(ch,first+1);
int year=atoi(str.Left(4));
int month=atoi(str.Mid(first+1,second-first+1));
int day=atoi(str.Mid(second+1,str.GetLength()-second-1));
    //
if (year < 2000 || year >= 2010)
{
   return false;
}
else if (month< 1 || month >12)
{
   return false;
}
else if (day< 1 || day > 31)
{
   return false;
}
else if (month == 4 || month == 6 || month == 9 || month == 11)
{
   if(day > 30)
   {
    return false;
   }
   else
   {
    return true;
   }
}
else if (month == '2')
{
   if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
   {
    if (day>29)
    {
     return false;
    }
    else
    {
     return true;
    }
   }
   else if (day>28)
   {
    return false;
   }
   return true;
}
else
{
   return true;
}
   
}

MFC :CTime CTimeSpan COleDateTime COleDateTimeSpan,CTime CTimeSpan ANSI time_t time_t Run-Time ,CTime time_t , long , long , 4294967296 68 , CTime 1970 2038 。
    ,MFC COleDateTime COleDateTimeSpan , CTime CTimeSpan,COleDateTime COleDateTimeSpan DATE , double , , 100 1 1 9999 12 31 ,COleDateTime COleDateTime::m_dt, DATE double , 1899 12 30 0 0 0 , 1899 12 30 0 0 0 , , :
COleDateTime t;
t.m_dt=0;
AfxMessageBox(t.Format("%Y-%m-%d %H:%M:%S"));
:1899-12-30 00:00:00
COleDateTime t;
t.m_dt=39444.437731;
AfxMessageBox(t.Format("%Y-%m-%d %H:%M:%S"));
:2007-10-28 10:30:20
, :
COleDateTime t(2004,12,28,22,22,22);
CString str;
str.Format("%f",t.m_dt);
AfxMessageBox(str);
:38349.932199
COleDateTimeSpan COleDateTime ,COleDateTimeSpan COleDateTimeSpan::m_span double COleDateTime::m_dt , :
COleDateTime t1(2006,1,1,0,0,0);
COleDateTime t2(2007,1,1,0,0,0);
COleDateTimeSpan ts=t2-t1;
CString str;
str.Format("%f",ts.m_span);
AfxMessageBox(str);
:365.000000

COleDateTime t1(2006,1,1,0,0,0);
COleDateTimeSpan ts;
ts.m_span=400.0;
COleDateTime t2=t1+ts;
AfxMessageBox(t2.Format("%c"));
:02/05/07 00:00:00
COleDateTimeSpan , MFC Bug,
double GetTotalDays( ) const;
double GetTotalHours( ) const;
double GetTotalMinutes( ) const;
double GetTotalSeconds( ) const;
double
, double GetTotalSeconds( ) const; MFC :
_AFXDISP_INLINE double COleDateTimeSpan::GetTotalSeconds() const
{ ASSERT(GetStatus() == valid);
   long lReturns = (long)(m_span * 24 * 60 * 60 + AFX_OLE_DATETIME_HALFSECOND);
   return lReturns;
}
, long , double , , GetTotalSeconds( ) , 68 , COleDateTimeSpan::m_span , , :
COleDateTime t1(2000,1,1,0,0,0);
COleDateTime t2(2070,1,1,0,0,0);
COleDateTimeSpan ts=t2-t1;
CString str;
str.Format("%f",ts.GetTotalSeconds());
AfxMessageBox(str);
:-2085892096.000000

str.Format("%f",ts.m_span*86400);
2209075200.000000。
COleDateTime m_dt COleDateTimeSpan m_span