大家好,我是剛學c++的菜鳥,現在要編一程式(日期與時間顯示),具體要求如下,望各位不吝賜教,萬分感謝!
日期時間顯示
(1)定義一個時間類Time,能提供時、分、秒組成的時間,并提供時間增加的方法(按秒)。
(2)定義一個日期類Date,記錄年、月、日,并提供日期增加的方法(按天)。
(3)由類Time和日期類Date,派生出DateTime類,除具有年、月、日、時、分、秒外,還增加國名和與格林威治時間的差。
編一應用程式,輸入年、月、日、時、分、秒,在螢屏上模擬顯示一電子計時器,不斷輸出下一秒的時間和日期,以及格林威治的日期和時間。
注意,當對日期增加1天后,會涉及所謂的“進位”問題:首先算出本“日”所在的月份具有的天數N,若加1之后的“日”數值超過所在的月份具有的天數N時,“進位”到月,而月份若超過12時還要“進位”到年。
思考:可對該類增加你所考慮到的其他功能,如,對日期進行輸入,計算二日期的間隔天數,計算某日期為星期幾,列印物件當前資料的y年m月的月歷,一次增加若干天,對兩個日期進行其他比較運算等。
uj5u.com熱心網友回復:
BCB中自帶的TDateTime和TTime基本滿足你要求uj5u.com熱心網友回復:
利用BCB自身的TDateTime組件,再用日期時間格式函式FormatDateTime("yyyy-mm-dd hh:mm:ss")處理成你需要的格式。如果只是需要當前時間直接用Now()函式。如:
1、你要顯示:2012-05-25 20:15:20
可以用AnsiString sDateTime = FormatDateTime("yyyy-mm-dd hh:mm:ss", Now());
2、你要顯示:2012年05月25日 20時15分20秒
可以用AnsiString sDateTime = FormatDateTime("yyyy年mm月dd日 hh時mm分ss秒", Now());
uj5u.com熱心網友回復:
謝謝,還是不太明白uj5u.com熱心網友回復:
TDateTime為實作TDateTime資料型別和使用TDateTime資料型別的日期-時間運行庫例程的C++類。TDateTime類繼續了double型的val資料成員,其中包含了日期-時間值。TDateTime值的整數部分為自從12/30/1899以來的天數。其小數部分為天的時間。
下列為一些TDateTime值的例子以及對應的日期和時間:
值 日期和時間
0 12/30/1899 12:00 am
2.75 1/ 1/1900 6:00 pm
-1.25 12/29/1899 6:00 am
35065 1/ 1/1996 12:00 am
要計算兩個日期間的天的小數部分,把兩個值相減。要在某天的小數部分增加一個日期-時間值,可把該小數加上日期-時間值。
方法串列
CurrentDate 回傳當前日期作為TDateTime值
CurrentDateTime 回傳當前日期和時間作為TDateTime 值
CurrentTime 回傳當前時間作為TDateTime值
DateString 把TDateTime值的日期轉換為一個字串
DateTimeString 把TDateTime值轉換為一個字串
DayOfWeek 回傳 TDateTime的week的天
DecodeDate 把TDateTime值分為year, month,和day值并把這些值分別存盤在year, month和day引數中
DecodeTime 把TDateTime值分為hour, minute, second,和millisecond值并把這些值分別存盤在hour, min, sec和msec引數中
FileDate 把日期 - 時間值轉換為DOS日期 - 時間標記
FileDateToDateTime 把FileDate引數指定的DOS檔案的日期 - 時間值轉換為TDateTime值
FormatString 利用format給定的格式格式化TDateTime物件
Operator - 回傳兩個TDateTime集之間的差的新的TDateTime物件
operator -- 回傳一個TDateTime與Int引數之間差的新的TDateTime物件
operator != 比較兩個TDateTime物件的不相同性
operator + 回傳一個為兩個TDateTime物件的聯合的一個新TDateTime 物件
operator += 把TDateTime 物件的本身資料與rhs 指定的TDateTime物件的聯合賦給TDateTime
operator -= 把TDateTime 物件本身資料的rhs指定的TDateTime物件之間的差賦給TDateTime物件
operator < 比較兩個TDateTime 物件
operator <= 比較兩個TDateTime 物件
operator = 把rhs 內容賦給TDateTime
operator == 比較兩個TDateTime 物件的相同
operator > 比較兩個TDateTime 物件
operator >= 比較兩個TDateTime 物件
operator AnsiString AnsiString 為轉換運算子
operator double double 為轉換運算子
operator int int 為轉換運算子
TDateTime TDateTime 建構式
TimeString 把TDateTime 物件轉換為AnsiString
方法
TDateTime::CurrentDate
回傳當前日期作為TDateTime值。
static TDateTime __fastcall CurrentDate( );
檢索當前日期并作為新的TDateTime 物件回傳。
TDateTime::CurrentDateTime
回傳當前日期和時間作為TDateTime值。
static TDateTime __fastcall CurrentDateTime( );
檢索當前日期和時間并作為新的TDateTime 物件回傳。
TDateTime::CurrentTime
回傳當前時間作為TDateTime 值。
static TDateTime __fastcall CurrentTime( );
檢索當前時間并作為新的TDateTime 物件回傳。
TDateTime::DateString
把TDateTime 值的日期轉換為一個字串。
AnsiString __fastcall DateString( )const;
回傳TDateTime物件作為一個AnsiString 的值。轉換利用ShortDateFormat 變數指定的格式。
TDateTime::DateTimeString
把TDateTime 值轉換為一個字串。
AnsiString __fastcall DateTimeString( )const
回傳一個AnsiString 物件,其中包含TDateTime 物件的日期和時間(val 資料成員)轉換為字串的值。假如TDateTime 值沒有包含一個date 值,date 就顯示為00/00/00。假如TDateTime 值沒有包含一個time值,time 就顯示為00:00:00 AM。可以通過改變日期和時間格式變數來改變字串格式。
TDateTime::DayOfWeek
回傳TDateTime 的week的天。
int __fastcall DayOfWeek()const;
TDateTime 的DayOfWeek 物件為 1 到 7 之間的整數。Sunday 為week 的第一天,Saturday 為第七天。
TDateTime::DecodeDate
把TDateTime 值分為year ,month和day 值并把這些值分別存盤在 year ,month 和 day 引數中。
void __fastcall DecodeDate(unsigned short* year,unsigned short* month,unsigned short* day)const;
需要訪問TDateTime物件的year, month 和day 時,利用DecodeDate。
TDateTime::DecodeTime
把TDateTime 值分為 hour ,minute,second 和 millisecond 值并把這些值分別存盤在 hour,min,sec 和 msec引數中。
void __fastcall DecodeTime(unsigned shot* hour,unsigned short*nim,unsigned short* sec,unsigned short* msec)const;
需要訪問TDateTime物件的hour,minute,second或millisecond時,利用DecodeDate。
TDateTime::FileDate
把日期—時間值轉換為DOS日期—時間標記。
int __fastcall FileDate()const;
TDateTime::FileDateToDateTime
把fileDate 引數指定的DOS檔案的日期—時間值轉換為TDateTime值。
static TDateTime __fastcall FileDateToDateTime(int fileDate);
TDateTime::FormatString
利用format 給定的格式格式化TDateTime 物件。
AnsiString __fastcall FormatString(const AnsiString& format);
支持下列分類符字串:
分類符字串 顯示方式
c 日期使用 ShortDateFormat全域變數給的格式,時間使用 LongTimeformat 全域變數給的格式。假如分數是0,時間就不顯示。
d 以數字表示日子,第一個字符不為 0 (1—31)
dd 以數字表示日子,第一個字符為0 (01—31)
ddd 以使用ShortDateFormat全域變數給的字串的縮寫(Sun—Sat) g表示日子
dddd 以使用Long Day Names全域變數給的字串的全稱(Sunday—Saturday)表示日子
ddddd 使用ShortDateFormat全域變數給的格式表示日期
dddddd 使用Long DateFormat 全域變數給的格式表示日期
m 以數字表示月份,第一個字符不為0 (1—12)。若m 后面跟著h或 hh,顯示的是分鐘,而不是月份
mm 以數字表示月份,第一個字符為0(01—12)。若mm 后面跟著h或 hh,顯示的是分鐘,而不是月份。
mmm 以使用ShortMonthNames 全域變數給的字串的縮寫( Jan — Dec)表示月份
mmmm 以使用Long Mames 全域變數給的字串的全稱(January — Decermber)表示月份
yy 以兩位數字表示年(00—99)
yyyy 以四位數字表示年(0000—9999)
h 以數字表示小時,第一字符不為0(0—23)
hh 以數字表示小時,第一字符為0(0—23
n 以數字表示分鐘,第一個字符不為0(0—59)
nn 以數字表示分鐘,第一個字符為0(00—59)
s 以數字表示秒,第一個字符不為0(0—59)
ss 以數字表示秒,第一個字符為0(00—59)
t 時間使用由ShortTimeFormst全域變數給定的格式
Ttt 時間使用由LongTimeFormat全域變數給定的格式
am/pm 時間為前面的h或hh分類符使用12小時時鐘,后面跟"am"指的是上午的時間,后面跟"pm"指的是下午的時間。am/pm分類符可以是大寫、小寫或混合使用,都能相應的顯示
a/p 時間為前面的h或hh分類符使用12小時時鐘,后面跟"a"指的是上午的時間,后面跟"p"指的是下午的時間。a/p分類符可以是大寫、小寫或混合使用,都能相應的顯示
ampm 時間為前面的h或hh分類符使用12小時時鐘,后面跟TimeAMString 全域變數指的是上午的時間,后面跟TimePMString 全域變數指的是下午的時間
/ 由DateSeparator 全域變數給定的日期分隔符
: 由TimeSeparator 全域變數給定的時間分隔符
'xx'/"xx" 用單引號或雙引號括起的符號,表示不進行格式轉換
格式分類符應寫成大寫或小寫字母,兩個產生同樣效果。假如格式引數指的是空字串,日期時間值被格式化成格式分類符給的是c。
TDateTime::operator -
TDateTime的operator-被多載如下:
TDateTime __fastcall operator - (const TDateTimeBase& rhs)const;
回傳這個TDateTime 物件與rhs 的差。
TDateTime __fastcall operator - (const TDateTime& rhs)const;
回傳兩個TDatieTime 物件的差。
TDateTime __fastcall operator - (const double rhs)const;
回傳這個TDateTime 物件與double的rhs 的差。
TDateTime __fastcall operator - (const int rhs)const;
回傳這個TDateTime 物件與int 的rhs 的差。
TDateTime::operator --
TDateTime的operator--被多載如下:
TDateTime& operator -- ( );
把這個TDateTime物件的日期減去一天(從val資料成員中減1)。
TDateTim
-
uj5u.com熱心網友回復:
樓上說的很全。。。。。學習個uj5u.com熱心網友回復:
真的寫得不錯啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/125626.html
標籤:基礎類
上一篇:想通過上傳檔案到SQL SERVER資料庫,并可從資料下載保存為檔案,上傳下載均有進度條;實作C/S模式通過資料庫在線升級,碰到些問題
