日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CTime,Systemtime的比较还有转换成日期格式。

發布時間:2024/4/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CTime,Systemtime的比较还有转换成日期格式。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

vc為我們提供了兩種日期型的變量。

一種是CTime。他的缺點就是年份只支持到2038年,以后的日期就不支持啦,如果你的項目有20-30年的壽命,你就選擇使用SYSTEMTIME.這個時間函數來進行比較還有轉換。

一種是SYSTEMTIME。

在比較的時候都不能直接比較??匆幌碌谝环NCTime .

CTime timeFrom;
m_dateFrom.GetTime(timeFrom);

CTime timeTo;
m_dateTo.GetTime(timeTo);

CTimeSpan timeSpan=timeTo-timeFrom;
? ? if(timeSpan.GetDays()<0)
{
? ? ? ? AfxMessageBox(_T("Date illegal"));
return;
}

代碼就不解釋啦。

轉換成日期格式

CString dateFrom=timeFrom.Format(_T("%Y-%m-%d"));

CString dateTo=timeTo.Format(_T("%Y-%m-%d"));

這樣你就可以查詢兩個日期之間的數據啦。

再看一下,SYSTEMTIME的比較,還是轉換成日期格式。

一樣也是定義兩個變量。


SYSTEMTIME timeFrom,timeTo;
m_dateFrom.GetTime(&timeFrom);
m_dateTo.GetTime(&timeTo);

但是這兩個時間怎么比較呢,查了好多資料,都是要轉換成CTime進行比較。

這樣字就沒有意義啦。

再在來介紹一種內存比較方法。

兩個日期進行內存比較就可以判斷出大小來。也不用費事去轉換。

int re=memcmp(&timeFrom,&timeTo,sizeof(SYSTEMTIME));
if (re>0)
{
AfxMessageBox(_T("Date illegal"));
return;
}

如果是re>0就說明第一個選擇的日期比第二個大。

如果是re<0就說明第一個選擇的日期比第二個小。

如果是re=0就說明第一個選擇的日期等于第二個。

下來看一下怎么把SYSTEMTIME轉換成日期格式xxxx-xx-xx

先來看一下他的幾種寫法分別出來的效果是什么樣子的。

VariantTimeToSystemTime(NULL,&timeFrom);

如果是這樣寫的話,不管你的日期選擇的是哪一天,永遠都是一天,是哪一天呢。1899-12-30日。

加個這個看看行不行

?COleDateTime oleTime;

VariantTimeToSystemTime(oleTime,&timeFrom);

結果運行結果還是一樣,還是那一天。

就沒有解決辦法了嗎?

看一下這樣定義行不行。

DATE date;

VariantTimeToSystemTime(date,&timeFrom);

CString dateFrom;
dateFrom.Format(_T("%04u-%02u-%02u"),timeFrom.wYear,timeFrom.wMonth,timeFrom.wDay);

這樣就可以完全顯示成XXXX-xx-xx的格式啦。








?

轉載于:https://www.cnblogs.com/snake-hand/p/3174601.html

總結

以上是生活随笔為你收集整理的CTime,Systemtime的比较还有转换成日期格式。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。