delphi 日期加減(及日期函數(shù))

delphi 日期加減(及日期函數(shù))



學(xué)習(xí)下載專區(qū) 【2020-05-18 14:15】


Delphi里有現(xiàn)成的函數(shù)可以實(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 開(kāi)頭的函數(shù) 
● 
Unit 

DateUtils 

function DateOf(const Avalue: TDateTime): TDateTime; 

描述 
使用 DateOf 函數(shù)用來(lái)把一個(gè) TDateTime 類型的變量轉(zhuǎn)變成一個(gè) 
只帶有日期的 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)換成一個(gè) 
字符串,使用給定的全局變量 ShortDateFormat 的格式,時(shí)間部分按照 
給定的全局變量 LongTimeFormat 的格式。 
其中 DateTime 為零的部分將不會(huì)顯示出來(lái)。 

例如: 
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中。 
對(duì)于Format的格式類型,請(qǐng)看 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); 

描述: 
有時(shí)為了調(diào)用API函數(shù)來(lái)使用系統(tǒng)時(shí)間,你可以使用 DateTimeToSystemTime 方法,來(lái)將一個(gè) 
TDateTime 類型的時(shí)間變量轉(zhuǎn)換成一個(gè) TSystemTime 類型的 系統(tǒng)時(shí)間。 

●function DateTimeToUnix(const Avalue: TDateTime ): Int64; 

描述: 
使用 DateTimeToUnix 函數(shù)來(lái)將一個(gè) TDateTime 型時(shí)間變量轉(zhuǎn)換成一個(gè)相應(yīng)的 Unix 格式 
的日期和時(shí)間。 
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 日期時(shí)間類型的日期部分。日期的轉(zhuǎn)換格式依賴于 
全局變量 ShortDateFormat。 

●function DayOf(const Avalue: TDateTime): Word; 

描述: 
對(duì)于給定的TDateTime類型的日期時(shí)間,使用 DayOf 函數(shù)能得到該日期是該月份的第幾天。 
該函數(shù)的返回?cái)?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; 

描述: 
對(duì)于給定的TDateTime類型的日期時(shí)間,使用 DayOfTheWeek 函數(shù)能得到該日期是該星期的 
第幾天。DayOfTheWeek 函數(shù)的返回?cái)?shù)值為 1 到 7,其中 1 表示星期一,而 7 表示星期日。 
注意:DayOfTheWeek 是 ISO 8601 標(biāo)準(zhǔn)的(此標(biāo)準(zhǔn)為 星期一是一周的第一天)。對(duì)于一周 
的第一天是星期日的標(biāo)準(zhǔn),如果想獲得星期數(shù),請(qǐng)使用 DayOfWeek 函數(shù)。 
Tip: To make the return value more readable, use the Day of week constants. 

●function DayOfTheYear(const Avalue: TDateTime): Word; 

描述: 
根據(jù)給定的日期時(shí)間參數(shù)Avalue,使用 DayOfTheYear 函數(shù)能得到在該日期所在的年份中,該 
日期按照順序所計(jì)算的天數(shù)。因此,作為T(mén)DateTime類型的變量 “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ù)兩個(gè)TDateTime類型的日期時(shí)間變量 ANow 和 AThen,DaysBetween函數(shù)能得到兩者之間的 
天數(shù)的差距。 
DaysBetween 僅僅根據(jù)天數(shù)的不同來(lái)計(jì)算。因此,對(duì)于 1999年12月31日 下午11點(diǎn)59分 到 
2000年1月1日 11點(diǎn)58分,該函數(shù)得到的結(jié)果是 0,因?yàn)閮烧咧g的時(shí)間差別還差 1 分鐘才到 
1 天。 

●function DaysInAMonth(const AYear, AMonth: Word): Word; 

描述: 
對(duì)于各定的 年份和月份,DaysInAMonth 函數(shù)能得到 該月份的總天數(shù)。 
年份應(yīng)該為 從 1 到 9999 
月份應(yīng)該為 從 1 到 12 

●function DaysInAYear(const AYear: Word): Word; 

描述: 
對(duì)于給定的年份,DaysInAYear函數(shù)能得到該年份的總天數(shù)。 
年份應(yīng)該為 1 到 9999。 

●function DaysInMonth(const Avalue: TDateTime): Word; 

描述: 
根據(jù)給定的TDateTime類型的時(shí)間日期參數(shù)Avalue,DaysInMonth函數(shù)能得到該月份的總天數(shù)。 

●function DaysInYear(const Avalue: TDateTime): Word; 

描述: 
根據(jù)給定的TDateTime類型的時(shí)間日期參數(shù)Avalue,DaysInYear函數(shù)能得到該年份的總天數(shù)。 

●function DaySpan(const ANow, AThen: TDateTime): Double; 

描述: 
根據(jù)兩個(gè)TDateTime類型的日期時(shí)間參數(shù)ANow和AThen,DaySpan能得到在天數(shù)上的差距。 
與 DaysBetween 函數(shù)不同,DaysBetween 函數(shù) 只是計(jì)算 整的天數(shù),而 DaySpan函數(shù)會(huì) 
將不足一天的數(shù)也得到。 
注意:此函數(shù)返回的數(shù)值為 Double 型。 

☆ Month 開(kāi)頭的函數(shù) 

●function MonthOf(const Avalue: TDateTime): Word; 

描述: 
根據(jù)給定的TDateTime類型的時(shí)間日期參數(shù)Avalue,MonthOf函數(shù)能得到該年份的該月份數(shù)。 
MonthOf返回?cái)?shù)值為 1 到 12。 
注意:MonthOf函數(shù)得到的數(shù)值與MonthOfTheYear函數(shù)相同 

●function MonthOfTheYear(const Avalue: TDateTime): Word; 

與MonthOf函數(shù)相同。 

●function MonthsBetween(const ANow, AThen: TDateTime): Integer; 

描述: 
根據(jù)兩個(gè)給定的TDateTime類型的參數(shù)ANow和AThen,MonthsBetween函數(shù)能得到兩個(gè)日期在月份 
上差距數(shù)。因?yàn)樵路莸奶鞌?shù)是不同的,所以 MonthsBetween 函數(shù)返回的是一個(gè)近似值,該近似 
值基于每個(gè)月份為 30.4375 天。不足一個(gè)月的數(shù)字將不被計(jì)算。 
因此,例如,對(duì)于 2月1日 到 2月28日,MonthsBetween 返回的數(shù)值為 0。 
同樣,對(duì)于 2月1日 到 3月1日,MonthsBetween 返回的數(shù)值也是 0。 

●function MonthSpan(const ANow, AThen: TDateTime): Double; 

描述: 
根據(jù)兩個(gè)給定的TDateTime類型的參數(shù)ANow和AThen,MonthsBetween函數(shù)能得到兩個(gè)日期在月份 
上差距數(shù)。因?yàn)樵路莸奶鞌?shù)是不同的,所以 MonthsBetween 函數(shù)返回的是一個(gè)近似值,該近似 
值基于每個(gè)月份為 30.4375 天。與 MonthsBetween 函數(shù)不同,MonthsBetween函數(shù)不計(jì)算不足 
一個(gè)月的數(shù)字,MonthSpan函數(shù)將會(huì)得到不足一個(gè)月的數(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 開(kāi)頭的函數(shù) 

●function WeekOf(const Avalue: TDateTime): Word; 

描述: 
根據(jù)TDateTime類型的日期時(shí)間參數(shù)AValu,WeekOf函數(shù)會(huì)得到該星期為一年的第幾個(gè) 
星期。 

●function WeeksInAYear(const AYear: Word): Word; 

描述: 
WeeksInAYear 函數(shù)根據(jù)年份得到在該年份中共包含多少個(gè)星期。 

●function WeeksBetween(const ANow, AThen: TDateTime): Integer; 

描述: 
根據(jù)兩個(gè)TDateTime類型的日期時(shí)間參數(shù)ANow和AThen,WeeksBetween函數(shù)將得到這兩個(gè)時(shí)間在 
星期上的差數(shù)。如果差數(shù)不足一個(gè)星期,則忽略掉。 

●function WeekSpan(const ANow, AThen: TDateTime): Double; 

描述: 
根據(jù)兩個(gè)TDateTime類型的日期時(shí)間參數(shù)ANow和AThen,WeeksBetween函數(shù)將得到這兩個(gè)時(shí)間在 
星期上的差數(shù)。如果差數(shù)不足一個(gè)星期,則WeekSpan函數(shù)不會(huì)忽略掉。 
注意:此函數(shù)的返回類型為 Double 

☆ Year 開(kāi)頭的函數(shù) 

●function YearOf(const Avalue: TDateTime): Word; 

描述: 
根據(jù)給定的TDateTime類型的日期時(shí)間參數(shù)Avalue,YearOf函數(shù)能得到該日期的年份數(shù)字。 
YearOf函數(shù)返回的數(shù)值為從 1 到 9999 

●function YearsBetween(const ANow, AThen: TDateTime): Integer; 

描述: 
根據(jù)兩個(gè)給定的TDateTime類型的參數(shù)ANow和AThen,YearsBetween函數(shù)能得到兩個(gè)日期在年份 
上差距數(shù)。因?yàn)槟攴莸奶鞌?shù)是不同的,所以 YearsBetween 函數(shù)返回的是一個(gè)近似值,該近似 
值基于每年的天數(shù)為 365.25 天。不足的一年的差距將不會(huì)被計(jì)算。 
因此例如:對(duì)于 1月1日和12月31日,如果這兩個(gè)日期在同一年,則 YearsBetween 返回?cái)?shù)值 
為 0;如果這兩個(gè)日期在臨近的年份,則 YearsBetween 函數(shù)返回?cái)?shù)值為 1。 

●function YearSpan(const ANow, AThen: TDateTime): Double; 

描述: 
根據(jù)兩個(gè)給定的TDateTime類型的參數(shù)ANow和AThen,YearsBetween函數(shù)能得到兩個(gè)日期在年份 
上差距數(shù)。因?yàn)槟攴莸奶鞌?shù)是不同的,所以 YearsBetween 函數(shù)返回的是一個(gè)近似值,該近似 
值基于每年的天數(shù)為 365.25 天。與 YearsBetween 函數(shù)不同,YearsBetween函數(shù)將忽略掉不 
足一年的數(shù)字,而 YearSpan 將計(jì)算不足一年的數(shù)字。 
注意:該函數(shù)返回類型為Double 


●function Yesterday: TDateTime; 

描述: 
Yesterday函數(shù)能得到當(dāng)前日期的前一天的日期,返回?cái)?shù)值中不包括時(shí)間部分。 
例如: 
當(dāng)前日期是 2003/3/19 
則 showmessage(datetimetostr(Yesterday)); 
將得到 2003/3/18 

☆日期的合成 
●function EncodeDate(Year, Month, Day: Word): TDateTime; 

描述: 
EncodeDate函數(shù)將根據(jù)參數(shù) 年份、月份、日子 而得到一個(gè)TDateTime類型的時(shí)間變量。 

●function EncodeDateDay(const AYear, ADayOfYear: Word): TDateTime; 

描述: 
EncodeDateDay將根據(jù)參數(shù)年份和天數(shù),而得到一個(gè)TDateTime類型的時(shí)間變量。 
其中AYear 為 1 到 9999。 
ADayOfYear 為日子在該年份順序排列的天數(shù),例如,1月1日時(shí),ADayOfYear為1, 
2月2日時(shí),ADayOfYear為2,3月1日時(shí),ADayOfYear為32。 

●function EncodeDateMonthWeek(const AYear, AMonth, AWeekOfMonth: Word; const ADayOfWeek: Word = 

1): TDateTime; 

描述: 
EncodeDateMonthWeek 函數(shù)將根據(jù)參數(shù) 年份、月份、星期數(shù),星期幾,來(lái)得到一個(gè)TDateTime類型 
的時(shí)間變量。 
其中AYear 為 1 到 9999。 
其中AMonth 為 1 到 12。 
AWeekOfMonth是在該月份的星期數(shù),1 表示第一個(gè)星期,可能包含4天或更多的天數(shù)。 
注意,一個(gè)月的第一天如果是 星期5,星期6或星期日,用表示這三天的AMonth數(shù)值必須設(shè)定 
為上一個(gè)月份的數(shù)字,同時(shí) AWeekOfMonth 要設(shè)為在上一個(gè)月所在的星期數(shù)。 
同樣,如果一個(gè)月的最后一天是 星期1,星期2,或星期3,那么用表示這三天的AMonth數(shù)值 
必須設(shè)定為下一個(gè)月份的數(shù)字,同時(shí) AWeekOfMonth 為 1。 
ADayOfWeek表示星期幾,星期一為1,星期二為2。 

●function EncodeDateTime(const AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: 

Word):TDateTime; 

描述: 
EncodeDateTime 根據(jù)參數(shù) 年份、月份、日子、小時(shí)、分、秒、毫秒 來(lái)得到一個(gè)TDateTime類型 
日期時(shí)間。 

●function EncodeDateWeek(const AYear, AWeekOfYear: Word; const ADayOfWeek: Word = 1): TDateTime; 

描述: 

EncodeDateWeek 根據(jù)參數(shù) 年份、星期數(shù)、星期幾 來(lái)得到一個(gè)TDateTime類型日期時(shí)間。 

AWeekOfYear是在該年份的星期數(shù),1 表示第一個(gè)星期,可能包含4天或更多的天數(shù)。 
注意,一年的第一天如果是 星期5,星期6或星期日,用表示這三天的AYear數(shù)值必須設(shè)定 
為上一個(gè)年份的數(shù)字,同時(shí) AWeekOfYear 要設(shè)為在上一個(gè)年所在的星期數(shù)。 
同樣,如果一年的最后一天是 星期1,星期2,或星期3,那么用表示這三天的AYear數(shù)值 
必須設(shè)定為下一個(gè)年份的數(shù)字,同時(shí) AWeekOfYear 為 1。 
ADayOfWeek表示星期幾,星期一為1,星期二為2。 

●function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime; 

描述: 
EncodeTime函數(shù)根據(jù)參數(shù) 小時(shí)、分、秒、毫秒 得到個(gè)一個(gè)TDateTime數(shù)值。 

☆日期的分解 

●procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word); 

描述: 
DecodeDate從一個(gè)TDateTime類型參數(shù)Date中分解出得到年份、月份、日子。 

●procedure DecodeDateDay(const Avalue: TDateTime; out AYear, ADayOfYear: Word); 

描述: 
DecodeDateDay 方法會(huì)根據(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)的年份、月份、月份中的第幾個(gè) 
星期、星期幾 
AYear:年份 
AMonth:月份,1 到 12 
AWeekOfMonth:在該月份中的第幾個(gè)星期 
ADayOfWeek:星期幾。星期一為1。 

●procedure DecodeDateTime(const Avalue: TDateTime; out AYear, AMonth, ADay, AHour, AMinute, 

ASecond, AMilliSecond: Word); 

描述: 
DecodeDateTime 方法根據(jù)TDateTime類型參數(shù)Avalue 得到相應(yīng)的年份、月份、日子、小時(shí)、分、秒、 
毫秒。 

●procedure DecodeDateWeek(const Avalue: TDateTime; out AYear, AWeekOfYear, ADayOfWeek: Word); 

描述: 
DecodeDateWeek方法根據(jù)TDateTime類型參數(shù)Avalue 得到相應(yīng)的年份、在該年中的第幾個(gè)星期、星期幾。

文章來(lái)源:https://blog.csdn.net/zengcong2013/article/details/11502987

友情鏈接:
SQL數(shù)據(jù)庫(kù)修復(fù)專家

——信陽(yáng)市速全網(wǎng)絡(luò)科技有限公司——

版權(quán)所有:信陽(yáng)市速全網(wǎng)絡(luò)科技有限公司

豫ICP備19030104號(hào)-2