Delphi里有現(xiàn)成的函數(shù)可以實現(xiàn)日期加減,是在DateUtils單元里的。
function IncYear(const AValue: TDateTime;
const ANumberOfYears: Integer = 1): TDateTime;
// function IncMonth is in SysUtils
function IncWeek(const AValue: TDateTime;
const ANumberOfWeeks: Integer = 1): TDateTime;
function IncDay(const AValue: TDateTime;
const ANumberOfDays: Integer = 1): TDateTime;
function IncHour(const AValue: TDateTime;
const ANumberOfHours: Int64 = 1): TDateTime;
function IncMinute(const AValue: TDateTime;
const ANumberOfMinutes: Int64 = 1): TDateTime;
function IncSecond(const AValue: TDateTime;
const ANumberOfSeconds: Int64 = 1): TDateTime;
function IncMilliSecond(const AValue: TDateTime;
const ANumberOfMilliSeconds: Int64 = 1): TDateTime;
Day 開頭的函數(shù)
●
Unit
DateUtils
function DateOf(const Avalue: TDateTime): TDateTime;
描述
使用 DateOf 函數(shù)用來把一個 TDateTime 類型的變量轉(zhuǎn)變成一個
只帶有日期的 TDateTime 類型變量。
例如:
showmessage(DateTimetostr(dateof(now())));
你得到的是 2003/03/19
而 showmessage(DateTimetostr((now())));
得到的是 2003/03/19 10:50:49
●function DateTimeToStr(DateTime: TDateTime): string;
描述
DateTimeToString 函數(shù)將 TDateTime 類型的參數(shù) DateTime 轉(zhuǎn)換成一個
字符串,使用給定的全局變量 ShortDateFormat 的格式,時間部分按照
給定的全局變量 LongTimeFormat 的格式。
其中 DateTime 為零的部分將不會顯示出來。
例如:
ShortDateFormat:=’yyyy mm dd’;
showmessage(DateTimetostr((now())));
你將得到:2003 03 19 10:50:49
●procedure DateTimeToString(var Result: string; const Format: string; DateTime: TDateTime);
描述:
DateTimeToString 方法將TDateTime類型的參數(shù)DateTime 按照由參數(shù)Format提供的格式
轉(zhuǎn)化成字符串,并保存在Result中。
對于Format的格式類型,請看 Date-Time format strings 的幫助。
例如:
DateTimeToString(result,’yyyy mm dd’,now());
那么 result的結(jié)果為:2003 03 19 10:50:49
●procedure DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TSystemTime);
描述:
有時為了調(diào)用API函數(shù)來使用系統(tǒng)時間,你可以使用 DateTimeToSystemTime 方法,來將一個
TDateTime 類型的時間變量轉(zhuǎn)換成一個 TSystemTime 類型的 系統(tǒng)時間。
●function DateTimeToUnix(const Avalue: TDateTime ): Int64;
描述:
使用 DateTimeToUnix 函數(shù)來將一個 TDateTime 型時間變量轉(zhuǎn)換成一個相應(yīng)的 Unix 格式
的日期和時間。
Unix date-and-time values are encoded as the number of seconds that have elapsed
since midnight at the start of January 1, 1970.
●function DateToStr(Date: TDateTime): string;
描述:
使用 DateToStr 函數(shù)能得到 TDateTime 日期時間類型的日期部分。日期的轉(zhuǎn)換格式依賴于
全局變量 ShortDateFormat。
●function DayOf(const Avalue: TDateTime): Word;
描述:
對于給定的TDateTime類型的日期時間,使用 DayOf 函數(shù)能得到該日期是該月份的第幾天。
該函數(shù)的返回數(shù)值在 1 到 31 之間
注意:DayOf 函數(shù)得到的結(jié)果與 DayOfTheMonth 相同。
例如:
showmessage(inttostr(dayof(now)));
得到的是:19 (今天是 某月19日)
●function DayOfTheMonth(const Avalue: TDateTime): Word;
與 DayOf 相同。
●function DayOfTheWeek(const Avalue: TDateTime): Word;
描述:
對于給定的TDateTime類型的日期時間,使用 DayOfTheWeek 函數(shù)能得到該日期是該星期的
第幾天。DayOfTheWeek 函數(shù)的返回數(shù)值為 1 到 7,其中 1 表示星期一,而 7 表示星期日。
注意:DayOfTheWeek 是 ISO 8601 標(biāo)準(zhǔn)的(此標(biāo)準(zhǔn)為 星期一是一周的第一天)。對于一周
的第一天是星期日的標(biāo)準(zhǔn),如果想獲得星期數(shù),請使用 DayOfWeek 函數(shù)。
Tip: To make the return value more readable, use the Day of week constants.
●function DayOfTheYear(const Avalue: TDateTime): Word;
描述:
根據(jù)給定的日期時間參數(shù)Avalue,使用 DayOfTheYear 函數(shù)能得到在該日期所在的年份中,該
日期按照順序所計算的天數(shù)。因此,作為TDateTime類型的變量 “1月1日”在該函數(shù)所得到的
結(jié)果為 1 ,“1月2日”所得到的結(jié)果為 2,“2月1日”所得到的結(jié)果就為 32,依次類推。
●function DayOfWeek(Date: TDateTime): Integer;
Description
DayOfWeek returns the day of the week of the specified date as an integer between
1 and 7, where Sunday is the first day of the week and Saturday is the seventh.
Note: DayOfWeek is not compliant with the ISO 8601 standard, which defines Monday
as the first day of the week. For an ISO 8601 compliant version, use the DayOfTheWeek
function instead.
描述:
按照給定的TDateTime類型的參數(shù)Date,DayOfWeek 函數(shù)得到一周中的第幾天,從1到7。
這里 星期日 是一周的第一天,而 星期六 是第七天。
●function DaysBetween(const ANow, AThen: TDateTime): Integer;
描述:
根據(jù)兩個TDateTime類型的日期時間變量 ANow 和 AThen,DaysBetween函數(shù)能得到兩者之間的
天數(shù)的差距。
DaysBetween 僅僅根據(jù)天數(shù)的不同來計算。因此,對于 1999年12月31日 下午11點59分 到
2000年1月1日 11點58分,該函數(shù)得到的結(jié)果是 0,因為兩者之間的時間差別還差 1 分鐘才到
1 天。
●function DaysInAMonth(const AYear, AMonth: Word): Word;
描述:
對于各定的 年份和月份,DaysInAMonth 函數(shù)能得到 該月份的總天數(shù)。
年份應(yīng)該為 從 1 到 9999
月份應(yīng)該為 從 1 到 12
●function DaysInAYear(const AYear: Word): Word;
描述:
對于給定的年份,DaysInAYear函數(shù)能得到該年份的總天數(shù)。
年份應(yīng)該為 1 到 9999。
●function DaysInMonth(const Avalue: TDateTime): Word;
描述:
根據(jù)給定的TDateTime類型的時間日期參數(shù)Avalue,DaysInMonth函數(shù)能得到該月份的總天數(shù)。
●function DaysInYear(const Avalue: TDateTime): Word;
描述:
根據(jù)給定的TDateTime類型的時間日期參數(shù)Avalue,DaysInYear函數(shù)能得到該年份的總天數(shù)。
●function DaySpan(const ANow, AThen: TDateTime): Double;
描述:
根據(jù)兩個TDateTime類型的日期時間參數(shù)ANow和AThen,DaySpan能得到在天數(shù)上的差距。
與 DaysBetween 函數(shù)不同,DaysBetween 函數(shù) 只是計算 整的天數(shù),而 DaySpan函數(shù)會
將不足一天的數(shù)也得到。
注意:此函數(shù)返回的數(shù)值為 Double 型。
☆ Month 開頭的函數(shù)
●function MonthOf(const Avalue: TDateTime): Word;
描述:
根據(jù)給定的TDateTime類型的時間日期參數(shù)Avalue,MonthOf函數(shù)能得到該年份的該月份數(shù)。
MonthOf返回數(shù)值為 1 到 12。
注意:MonthOf函數(shù)得到的數(shù)值與MonthOfTheYear函數(shù)相同
●function MonthOfTheYear(const Avalue: TDateTime): Word;
與MonthOf函數(shù)相同。
●function MonthsBetween(const ANow, AThen: TDateTime): Integer;
描述:
根據(jù)兩個給定的TDateTime類型的參數(shù)ANow和AThen,MonthsBetween函數(shù)能得到兩個日期在月份
上差距數(shù)。因為月份的天數(shù)是不同的,所以 MonthsBetween 函數(shù)返回的是一個近似值,該近似
值基于每個月份為 30.4375 天。不足一個月的數(shù)字將不被計算。
因此,例如,對于 2月1日 到 2月28日,MonthsBetween 返回的數(shù)值為 0。
同樣,對于 2月1日 到 3月1日,MonthsBetween 返回的數(shù)值也是 0。
●function MonthSpan(const ANow, AThen: TDateTime): Double;
描述:
根據(jù)兩個給定的TDateTime類型的參數(shù)ANow和AThen,MonthsBetween函數(shù)能得到兩個日期在月份
上差距數(shù)。因為月份的天數(shù)是不同的,所以 MonthsBetween 函數(shù)返回的是一個近似值,該近似
值基于每個月份為 30.4375 天。與 MonthsBetween 函數(shù)不同,MonthsBetween函數(shù)不計算不足
一個月的數(shù)字,MonthSpan函數(shù)將會得到不足一個月的數(shù)字。
注意:此函數(shù)返回的類型為 Double
●function MonthStr(DateTime: TDateTime): string;
Description
HTTP message headers permit several formats for the representation of date and time
values. MonthStr converts a TDateTime value into a string representing the month.
MonthStr allows server applications to work with date values taken from HTTP request
messages, without worrying about the details of how they are formatted.
☆ Week 開頭的函數(shù)
●function WeekOf(const Avalue: TDateTime): Word;
描述:
根據(jù)TDateTime類型的日期時間參數(shù)AValu,WeekOf函數(shù)會得到該星期為一年的第幾個
星期。
●function WeeksInAYear(const AYear: Word): Word;
描述:
WeeksInAYear 函數(shù)根據(jù)年份得到在該年份中共包含多少個星期。
●function WeeksBetween(const ANow, AThen: TDateTime): Integer;
描述:
根據(jù)兩個TDateTime類型的日期時間參數(shù)ANow和AThen,WeeksBetween函數(shù)將得到這兩個時間在
星期上的差數(shù)。如果差數(shù)不足一個星期,則忽略掉。
●function WeekSpan(const ANow, AThen: TDateTime): Double;
描述:
根據(jù)兩個TDateTime類型的日期時間參數(shù)ANow和AThen,WeeksBetween函數(shù)將得到這兩個時間在
星期上的差數(shù)。如果差數(shù)不足一個星期,則WeekSpan函數(shù)不會忽略掉。
注意:此函數(shù)的返回類型為 Double
☆ Year 開頭的函數(shù)
●function YearOf(const Avalue: TDateTime): Word;
描述:
根據(jù)給定的TDateTime類型的日期時間參數(shù)Avalue,YearOf函數(shù)能得到該日期的年份數(shù)字。
YearOf函數(shù)返回的數(shù)值為從 1 到 9999
●function YearsBetween(const ANow, AThen: TDateTime): Integer;
描述:
根據(jù)兩個給定的TDateTime類型的參數(shù)ANow和AThen,YearsBetween函數(shù)能得到兩個日期在年份
上差距數(shù)。因為年份的天數(shù)是不同的,所以 YearsBetween 函數(shù)返回的是一個近似值,該近似
值基于每年的天數(shù)為 365.25 天。不足的一年的差距將不會被計算。
因此例如:對于 1月1日和12月31日,如果這兩個日期在同一年,則 YearsBetween 返回數(shù)值
為 0;如果這兩個日期在臨近的年份,則 YearsBetween 函數(shù)返回數(shù)值為 1。
●function YearSpan(const ANow, AThen: TDateTime): Double;
描述:
根據(jù)兩個給定的TDateTime類型的參數(shù)ANow和AThen,YearsBetween函數(shù)能得到兩個日期在年份
上差距數(shù)。因為年份的天數(shù)是不同的,所以 YearsBetween 函數(shù)返回的是一個近似值,該近似
值基于每年的天數(shù)為 365.25 天。與 YearsBetween 函數(shù)不同,YearsBetween函數(shù)將忽略掉不
足一年的數(shù)字,而 YearSpan 將計算不足一年的數(shù)字。
注意:該函數(shù)返回類型為Double
●function Yesterday: TDateTime;
描述:
Yesterday函數(shù)能得到當(dāng)前日期的前一天的日期,返回數(shù)值中不包括時間部分。
例如:
當(dāng)前日期是 2003/3/19
則 showmessage(datetimetostr(Yesterday));
將得到 2003/3/18
☆日期的合成
●function EncodeDate(Year, Month, Day: Word): TDateTime;
描述:
EncodeDate函數(shù)將根據(jù)參數(shù) 年份、月份、日子 而得到一個TDateTime類型的時間變量。
●function EncodeDateDay(const AYear, ADayOfYear: Word): TDateTime;
描述:
EncodeDateDay將根據(jù)參數(shù)年份和天數(shù),而得到一個TDateTime類型的時間變量。
其中AYear 為 1 到 9999。
ADayOfYear 為日子在該年份順序排列的天數(shù),例如,1月1日時,ADayOfYear為1,
2月2日時,ADayOfYear為2,3月1日時,ADayOfYear為32。
●function EncodeDateMonthWeek(const AYear, AMonth, AWeekOfMonth: Word; const ADayOfWeek: Word =
1): TDateTime;
描述:
EncodeDateMonthWeek 函數(shù)將根據(jù)參數(shù) 年份、月份、星期數(shù),星期幾,來得到一個TDateTime類型
的時間變量。
其中AYear 為 1 到 9999。
其中AMonth 為 1 到 12。
AWeekOfMonth是在該月份的星期數(shù),1 表示第一個星期,可能包含4天或更多的天數(shù)。
注意,一個月的第一天如果是 星期5,星期6或星期日,用表示這三天的AMonth數(shù)值必須設(shè)定
為上一個月份的數(shù)字,同時 AWeekOfMonth 要設(shè)為在上一個月所在的星期數(shù)。
同樣,如果一個月的最后一天是 星期1,星期2,或星期3,那么用表示這三天的AMonth數(shù)值
必須設(shè)定為下一個月份的數(shù)字,同時 AWeekOfMonth 為 1。
ADayOfWeek表示星期幾,星期一為1,星期二為2。
●function EncodeDateTime(const AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond:
Word):TDateTime;
描述:
EncodeDateTime 根據(jù)參數(shù) 年份、月份、日子、小時、分、秒、毫秒 來得到一個TDateTime類型
日期時間。
●function EncodeDateWeek(const AYear, AWeekOfYear: Word; const ADayOfWeek: Word = 1): TDateTime;
描述:
EncodeDateWeek 根據(jù)參數(shù) 年份、星期數(shù)、星期幾 來得到一個TDateTime類型日期時間。
AWeekOfYear是在該年份的星期數(shù),1 表示第一個星期,可能包含4天或更多的天數(shù)。
注意,一年的第一天如果是 星期5,星期6或星期日,用表示這三天的AYear數(shù)值必須設(shè)定
為上一個年份的數(shù)字,同時 AWeekOfYear 要設(shè)為在上一個年所在的星期數(shù)。
同樣,如果一年的最后一天是 星期1,星期2,或星期3,那么用表示這三天的AYear數(shù)值
必須設(shè)定為下一個年份的數(shù)字,同時 AWeekOfYear 為 1。
ADayOfWeek表示星期幾,星期一為1,星期二為2。
●function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;
描述:
EncodeTime函數(shù)根據(jù)參數(shù) 小時、分、秒、毫秒 得到個一個TDateTime數(shù)值。
☆日期的分解
●procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);
描述:
DecodeDate從一個TDateTime類型參數(shù)Date中分解出得到年份、月份、日子。
●procedure DecodeDateDay(const Avalue: TDateTime; out AYear, ADayOfYear: Word);
描述:
DecodeDateDay 方法會根據(jù)TDateTime類型參數(shù)Avalue 得到相應(yīng)的年份和日期總數(shù)。
ADayOfYear:1月1日,此數(shù)值為1;1月2日,此數(shù)值為2。
●procedure DecodeDateMonthWeek(const Avalue: TDateTime; out AYear, AMonth, AWeekOfMonth,
ADayOfWeek: Word);
描述:
DecodeDateMonthWeek方法根據(jù)TDateTime類型參數(shù)Avalue 得到相應(yīng)的年份、月份、月份中的第幾個
星期、星期幾
AYear:年份
AMonth:月份,1 到 12
AWeekOfMonth:在該月份中的第幾個星期
ADayOfWeek:星期幾。星期一為1。
●procedure DecodeDateTime(const Avalue: TDateTime; out AYear, AMonth, ADay, AHour, AMinute,
ASecond, AMilliSecond: Word);
描述:
DecodeDateTime 方法根據(jù)TDateTime類型參數(shù)Avalue 得到相應(yīng)的年份、月份、日子、小時、分、秒、
毫秒。
●procedure DecodeDateWeek(const Avalue: TDateTime; out AYear, AWeekOfYear, ADayOfWeek: Word);
描述:
DecodeDateWeek方法根據(jù)TDateTime類型參數(shù)Avalue 得到相應(yīng)的年份、在該年中的第幾個星期、星期幾。
文章來源:https://blog.csdn.net/zengcong2013/article/details/11502987