天天看點

vc ++ 常用CTime相關CTime::FormatCTime::GetTime伴生類CTimeSpan表示時間間隔。CDateTimeCtrl 控件類型

CTime

 值基于協調世界時(UTC),相當于協調世界時(格林尼治标準時間,GMT)

CTime:: CTime	以多種方式構造 CTime 的對象。

CTime() throw();
CTime(__time64_t time) throw();
CTime(int nYear, int nMonth, int nDay,
      int nHour, int nMin, int nSec, int nDST = -1);
CTime(WORD wDosDate, WORD wDosTime, int nDST = -1);
CTime(const SYSTEMTIME& st, int nDST = - 1) throw();
CTime(const FILETIME& ft, int nDST = - 1);
CTime(const DBTIMESTAMP& dbts, int nDST = -1) throw();
           

CString 轉 CTime

char *chLineData =  "2020-03-24 21:39:40";
sscanf_s(chLineData,"%4d-%2d-%2d %2d:%2d:%2d",&nYear, &nMonth, &nDate, &nHour, &nMin, &nSec);
// 判斷是否是有效
nYear > 1970 && nYear < 3000 ? nYear : nYear = 2018;
nMonth > 0 && nMonth <= 12   ? nMonth : nMonth = 1;
nDate > 0 && nDate <= 31 ? nDate : nDate = 1;
nHour >= 0 && nHour < 24 ? nHour : nHour = 0;
nMin >= 0 && nMin < 60 ? nMin : nMin = 0;
nSec >= 0 && nSec < 60 ? nSec : nSec = 0;

CTime cTime = CTime(nYear, nMonth, nDate, nHour, nMin, nSec);



CString strTime = CTime::GetCurrentTime().Format(_T("%4d-%2d-%2d %2d:%2d:%2d"));
           

time_t 構造 CTime

time_t osBinaryTime;  // C run-time time (defined in <time.h>)
time(&osBinaryTime) ;  // Get the current time from the 
                         // operating system.
CTime time1; // Empty CTime. (0 is illegal time value.)
CTime time2 = time1; // Copy constructor.
CTime time3(osBinaryTime);  // CTime from C run-time time


char   str[128];
tm	   time;
time_t date = (time_t)lTime;
localtime_s(&time, &date);
strftime(str, sizeof(str), "%F %T", &time);
CString stTime= str;
           
公共方法
名稱	說明
CTime:: Format	根據本地時區,将 CTime 對象轉換為帶格式的字元串。
CTime:: FormatGmt	将 CTime 對象轉換為基于 UTC 的格式化字元串。
CTime:: GetAsDBTIMESTAMP	将 CTime 對象中存儲的時間資訊轉換為與 Win32 相容的 DBTIMESTAMP 結構。
CTime:: GetAsSystemTime	将 CTime 對象中存儲的時間資訊轉換為與 Win32 相容的SYSTEMTIME結構。
CTime:: GetCurrentTime	建立一個表示目前時間的 CTime 對象(靜态成員函數)。
CTime:: GetDay	傳回 CTime 對象表示的日期。
CTime:: GetDayOfWeek	傳回 CTime 對象所表示的周中的某一天。
CTime:: GetGmtTm	基于 UTC 将 CTime 對象分解為元件。
CTime:: GetHour	傳回 CTime 對象所表示的小時。
CTime:: GetLocalTm	根據本地時區,将 CTime 對象分解為個元件。
CTime:: GetMinute	傳回 CTime 對象表示的分鐘數。
CTime:: GetMonth	傳回 CTime 對象所表示的月份。
CTime:: GetSecond	傳回 CTime 對象表示的第二個。
CTime:: GetTime	傳回給定 CTime 對象的 __time64_t值。
CTime:: GetYear	傳回 CTime 對象所表示的年份。
CTime:: Serialize64	在存檔中序列化資料。

運算符
operator +-	這些運算符添加并減去 CTimeSpan 和 CTime 對象。
operator + =,-=	這些運算符在此 CTime 對象中增加和減少一個 CTimeSpan 對象。
operator =	指派運算符。
operator = =、< 等。	比較運算符。
           

CTime::Format

CTime Format

%a  —— 星期(縮寫英文),如Fri; 
%A  —— 星期(全寫英文),如Friday 
%b  —— 月份(縮寫英文),如Oct 
%B  —— 月份(全寫英文),如 October 
%c  —— 月/日/年 時:分:秒,如 10/13/06 19:17:17 
%d  —— 日期(1 ~ 31) 
%H  —— 時(24小時制)(0 ~ 23) 
%I  —— 時(12小時制)(0 ~ 12) 
%j  —— 一年當中的第幾天,(1 ~ 366) 
%m  —— 月份(數字 1 ~ 12) 
%M  —— 分(0 ~ 59) 
%p  —— 12小時中的A M/PM訓示,或者AM,或者PM 
%S  —— 秒(0 ~ 59) 
%U  —— 一年中的第幾周,星期日作為每周的第一天(0 ~ 53) 
%w  —— 星期(數字表示,0 ~ 6,0代表星期日) 
%W  —— 一年中的第幾周,星期一作為每周的第一天(0 ~ 53) 
%x  —— 月/日/年,%c的前半段
           

CTime:: GetAsSystemTime

typedef struct _SYSTEMTIME {
  WORD wYear;
  WORD wMonth;
  WORD wDayOfWeek;        //星期幾
  WORD wDay;
  WORD wHour;
  WORD wMinute;
  WORD wSecond;
  WORD wMilliseconds;     // 毫秒
} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;



#include <windows.h>
#include <stdio.h>

void main()
{
    SYSTEMTIME st, lt;
    
    GetSystemTime(&st);
    GetLocalTime(&lt);
    
    printf("The system time is: %02d:%02d\n", st.wHour, st.wMinute);
    printf(" The local time is: %02d:%02d\n", lt.wHour, lt.wMinute);
}
           

CTime:: GetGmtTm

struct tm* GetGmtTm(struct tm* ptm) const;
struct tm* GetLocalTm(struct tm* ptm) const;


struct tm *gmtime( const time_t *sourceTime );
struct tm *_gmtime32( const __time32_t *sourceTime );
struct tm *_gmtime64( const __time64_t *sourceTime );
           
vc ++ 常用CTime相關CTime::FormatCTime::GetTime伴生類CTimeSpan表示時間間隔。CDateTimeCtrl 控件類型

CTime::GetTime

CTime t(2005, 10, 20, 23, 50, 0); // 11:50 PM October 20, 2005
time_t osBinaryTime = t.GetTime();  // time_t defined in <time.h>
           

伴生類CTimeSpan表示時間間隔。

CDateTimeCtrl 控件類型

CloseMonthCal	關閉目前日期和時間選取器控件。
Create	        建立日期和時間選取器控件,并将其附加到 CDateTimeCtrl 對象上。
GetDateTimePickerInfo	檢索有關目前日期和時間選擇器控件的資訊。
GetIdealSize	傳回顯示目前日期或時間所需的日期和時間選取器控件的理想大小。
GetMonthCalColor	檢索日期和時間選取器控件内月曆的給定部分的顔色。
GetMonthCalCtrl	檢索與日期和時間選取器控件關聯的 CMonthCalCtrl 對象。
GetMonthCalFont	檢索日期和時間選擇器控件的子月曆控件目前使用的字型。
GetMonthCalStyle	擷取目前日期和時間選擇器控件的樣式。
GetRange	檢索日期和時間選擇器控件的目前最小和最大允許系統時間。

GetTime	從日期和時間選取器控件中檢索目前標明的時間,并将其放入指定的 SYSTEMTIME 結構。

SetFormat	根據給定的格式字元串,設定日期和時間選擇器控件的顯示。
SetMonthCalColor	設定日期和時間選取器控件内月曆的給定部分的顔色。
SetMonthCalFont	設定日期和時間選擇器控件的子月曆控件将使用的字型。
SetMonthCalStyle	設定目前日期和時間選取器控件的樣式。
SetRange	設定日期和時間選取器控件所允許的最小和最大系統時間。

SetTime	設定日期和時間選取器控件中的時間。


CTime  starttime1;
m_starttime1.GetTime(starttime1);

m_starttime1.SetTime(&starttime1);
           

C  中的Time

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

int main( void )
{
   struct tm  when;
   __time64_t now, result;
   int        days;
   char       buff[80];

   time( &now );
   _localtime64_s( &when, &now );
   asctime_s( buff, sizeof(buff), &when );
   printf( "Current time is %s\n", buff );
   days = 20;
   when.tm_mday = when.tm_mday + days;
   if( (result = mktime( &when )) != (time_t)-1 ) {
      asctime_s( buff, sizeof(buff), &when );
      printf( "In %d days the time will be %s\n", days, buff );
   } else
      perror( "mktime failed" );
}


out put :
Current time is Fri Apr 25 13:34:07 2003

In 20 days the time will be Thu May 15 13:34:07 2003