Datumfunktioner i Delphi - del1
Förord
Denna kurs är del1 om delphis datumfunktioner. I del1 kommer jag bara ta upp dom viktigaste och vanligaste funktionerna, och i del2 kommer jag göra ett litet program med dessa funktioner. Delphi har en hel del datumfunktioner, tex TimeToStr(),DateToStr(),DayOfTheWeek(),WeekOfTheYear() osv. (Artikeln är skriven av Björn Johansson)
Intro
Nästan alla datumfunktioner som jag kommer ta upp ligger i unit 'DateUtils' Och för att kunna använda dessa funktioner måste du inkludera DateUtils nästan högst upp i Uses:
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,DateUtils;
Så ska det se ut för att du ska kunna använda dessa funktioner.
Dagens datum och tid
För att skriva ut Datum och tid så kan du lägga ut en label på din form och dubbelklicka på formen och skriv in:
Label1.caption := 'dagens datum är: ' + DateToStr(now) + ' och klockan är ' + TimeToStr(now);
DateTostr(now) skriver ut dagens datum och TimeToStr(now) skriver ut klockslaget, i denna kod
skriver TimeToStr(now) ut tiden då du startar ditt program eftersom det ligger i:
procedure TForm1.FormCreate(Sender: TObject);
Exempel på utdata: dagens datum är: 2003-01-17 och klockan är 22:54:40
En annan function du kan använda är DateTimeToStr() vilket gör samma sak fast det bara är ett funktionsanrop.
Exempel på hur du använder den:
Label1.Caption := DateTimeToStr(now)
Exempel på utdata: 2003-01-17 22:53:38
Dagens namn
För att skriva ut dagens namn behövs en array som vi tex kallas Dag och så definerar vi arrayen:
var
Dag: Array[1..7] of string;
Sen ska vi fylla hela arrayen Dag med veckans dagar:
dag[1] := 'måndag';
dag[2] := 'tisdag';
dag[3] := 'onsdag';
dag[4] := 'torsdag';
dag[5] := 'fredag';
dag[6] := 'lördag';
dag[7] := 'söndag';
Och sen ska vi skriva ut dagens namn:
Label1.Caption := dateToStr(now) + ' är en ' + dag[DayOfTheWeek(now)];
Rita ut en Label och kör så kommer du förhoppningsvis(om du har gjort rätt) se dagens namn.
DayOfTheWeek är den funktionen som retunerar en siffra som vi sen genom arrayen tar vara på den siffran och "översätter" till dagens namn.
alltså om DayOfTheWeek retunerar en sjua blir det söndag, en etta blir det måndag osv
exempel på utdata: Lördag
årets vecka
För att skriva ut vilken vecka det är på året kan man använda funktionen WeekOfTheyear() som retunerar veckans nummer.exempel:
label1.Caption := floatToStr(WeekOfTheyear(now));
Rita ut en label och kör.
Här använder vi först floatToStr() funktionen eftersom WeekOfTheyear returerar värden av typen Word.
Sen så använder vi funktionen WeekOfTheyear().
Vi skriver Now för att få vecken NU.
men om vi vill ha vilken vecka det var år 100 skriver vi 100 där istället.
exempel på utdata: 3
Årets månad
För att ta reda på årets månad just nu kan vi använda MonthOfTheYear() funktionen.Den fungerar likadant som DayofTheWeek-funktionen.
alltså du lägger månaderna i en array:
var
month:ARRAY[1..12] of string;
begin
//fyll arrayen med månaderna:
month[1] := 'Januari';
month[2] := 'februari';
month[3] := 'mars';
month[4] := 'april';
month[5] := 'maj';
month[6] := 'juni';
month[7] := 'juli';
month[8] := 'agusti';
month[9] := 'september';
month[10] := 'oktober';
month[11] := 'november';
month[12] := 'december';
//skriv ut vilken månad det är just nu:
Label1.Caption := month[MonthOfTheYear(now)];
end;
exempel på utdata: Januari
Vilket år är det?
Vill du bara skriva ut året? då passar CurrentYear funktionen perfekt.CurrentYear returerar ett värde av typen word vilket gör att vi måste skriva:
Label1.caption := floatToStr(CurrentYear);
CurrentYear returerar en fyrsiffrigt tal om vilket år det är just nu.
Exempel på utdata: 2003
tid imellan två datum
Dagar imellan:
vill du veta hur många dagar det är mellan två datum? då har du funktionen DaysBetween.
DaysBetween returerar ett värde av Integer, och man måste jämnföra mellan två giltiga datum.
exempel:
Label1.Caption := IntToStr(DaysBetween(StrToDate('2003-01-17'),StrToDate('2003-01-19')));
Exempel på utdata: 2
Eftersom DaysBetween returerar ett värde av typen Integer måste man använda IntToStr() funktionen för att kunna skriva på label1. Man måste skriva in giltiga datum(Tdate) så kan man skriva StrToDate('ditt datum'), likadant på nästa parameter.
StrToDate gör om din sträng till ett datum.
Veckor imellan
Vill du veta antal veckor mellan två datum Kan du använda WeeksBetween
Exempel:
showmessage(IntToStr(WeeksBetween(now,StrToDate('2003-02-13'))));
WeeksBetween() returerar ett värde av typen Integer vilket gör att du måste använda intToStr för att kunna skriva ut värdet du får tillbaka på en label eller något liknande.
Exempel på utdata: 3
Denna funktion fungerar som DaysBetween. Alltså skriv in två giltiga datum(Tdate) som parametrar och få ut hur många veckor det är mellan dom två datumena
Se även:
YearsBetween
HoursBetween
MinutesBetween
MonthsBetween
Jämför två datum
Om du vill jämföra två datum Kan du använda CompareDate()Om datumena är lika så returnerar funktionen 0, -1 om andra datumet är högre än första datumet och 1 om datumet är mindre än första datumet
Exempel:
if CompareDate(StrToDate('2003-01-13'),strToDate('2003-01-14')) = -1 then
Label1.caption := 'Datumet är större';
if CompareDate(StrToDate('2003-01-13'),strToDate('2003-01-12')) = 1 then
Label1.caption := 'Datumet är mindre';
if CompareDate(StrToDate('2003-01-13'),strToDate('2003-01-13')) = 0 then
Label1.caption := 'båda datumena är lika';
Månadens datum
Vill du bara få ut vilken dag det är denna månad?Då kan du använda DayOf()
Dayof() returerar ett värde av typen Word. värdet kan bestå av tal mellan 1 och 31
Exempel:
showmessage('Idag är det den ' + floattostr(dayof(now)));
Eftersom dayof() returerar ett värde av typen word måste vi använda floattostr()
now betyder att vi ska ta tiden NU
Exempel på utdata: Idag är det den 18
Se även:
HourOf
MinuteOf
MonthOf
SecondOf
TimeOf
WeekOf
YearOf
Antal dagar i en månad
Om du vill få reda på antal dagar i en månad kan du använda DaysInAMonth().DaysInAMonth() returerar ett värde av typen Word
Först ska man skriva in vilket år man vill kolla(1-9999), sen vilken månad(1-12)
Så om man vill ha ut hur många dagar det är i januari detta år skriver man:
showmessage(FloatToStr(DaysInaMonth(CurrentYear,1)))
Exempel på utdata: 31
Kolla även in funktionen DaysInYear() som funkar likadant som DaysInAYear fast du skriver bara året du vill kolla.
Och den returerar ett värde av typen Word vilket gör att du måste använda floatToStr()
Litet exempel på den funktionen:
showmessage(FloatToStr(DaysinYear(CurrentYear)))
Är året ett skottår?
Vill du veta om ett år är ett skottår?Då finns funktionen IsLeapYear().
IsLeapYear returerar True eller False.
True om det är ett skottår och False om det inte är ett skottår.
Exempel:
If IsLeapYear(Currentyear) then
showmessage('Är ett skottår')
else
showmessage('Är inte ett skottår');
Exempel på utdata: Är inte ett skottår
sammanfattning
Du har nu lärt dig några av delphis datumfunktioner.Dom du har lärt dig är:
DateToStr
TimeToStr
DateTimeToStr
DayOfTheWeek
WeekOfTheyear
MonthOfTheYear
CurrentYear
DaysBetween
WeeksBetween
YearsBetween
HoursBetween
CompareDate
dayof
DaysInaMonth
DaysinYear
IsLeapYear
I nästa del kommer jag göra ett program med dessa funktioner du just har läst om.
0 Kommentarer