Avatar billede hugopedersen Nybegynder
06. oktober 2008 - 07:39 Der er 17 kommentarer og
1 løsning

DateSerial eller lignende funktion

Jeg søger med lys og lygte efter en funktion der kan give mig et nummer på dagen i en dato.
I M$ Excel vil værdien 1 konvertere til 01-01-1900 hvis man ændrer formatet på feltet.
Avatar billede hrc Mester
06. oktober 2008 - 09:10 #1
I delphi, i unitten DateUtils, er der DayOfTheMonth, DayOfTheWeek, DayOfTheYear. Kan de bruges?
Avatar billede borrisholt Novice
06. oktober 2008 - 09:28 #2
DateToStr(1)
Avatar billede borrisholt Novice
06. oktober 2008 - 09:28 #3
FormatDateTime
Avatar billede kroning Nybegynder
06. oktober 2008 - 10:05 #4
I Delphi svarer 1 til 31-12-1899

Tallet for dagen i dag er 39729 og den finder du sådan:
showmessage(inttostr(trunc(date)));
Avatar billede kroning Nybegynder
06. oktober 2008 - 10:06 #5
Tryk fejl, dagen i dag svarer til 39727
Avatar billede hrc Mester
06. oktober 2008 - 10:50 #6
Hvis du skal arbejde sammen med et Excel-dokument skal du vide at der er to formater at vælge mellem i Excel. Den ene er vistnok tilnærmelsesvis kompatibel med Delphis geniale (og enkle) TDateTime.
Avatar billede hugopedersen Nybegynder
06. oktober 2008 - 11:03 #7
Jeg skal ikke arbejde sammen med Excel som sådan.
Det jeg skal er 'bare' i en import at stemple hver record med nummeret for dags dato og dags dato -1 for at kunne finde ud af tilvækst indtægt dag for dag.
Så bare det er et eller andet tal der starter et veldefineret sted (dato) så er det fint i mit tilfælde.
Avatar billede kroning Nybegynder
06. oktober 2008 - 11:34 #8
Jamen så må trunc(Date) være løsningen vil jeg mene.
Avatar billede hugopedersen Nybegynder
06. oktober 2008 - 11:40 #9
OK - jeg forsøger mig lige.
Avatar billede borrisholt Novice
06. oktober 2008 - 11:48 #10
kroning>> Du har ret og dog ikke aligevel ... Som delphi programmør er det en meget god ting at kende sit værktøj, og lære at bruge det på den rigtigt måde ... Jeg vil anbefale hugopedersen at bruge funktionerne i DateUtils som hrc så rigtigt skriver.

Jens B
Avatar billede kroning Nybegynder
06. oktober 2008 - 11:55 #11
Jeg forstod spøgsmålet på at måde at hugo vil have et heltal der repræsentere en bestemt dato således at tallet-1 er dagen før og tallet+1 er dagen efter og så må heltals værdien af en TDateTime være løsningen.
Avatar billede borrisholt Novice
06. oktober 2008 - 12:19 #12
Yes yes ... Det ver ikke så meget det .. det var nok mere en opråb om at kigge i DateUtils.pas og se omikke der var noget man kunne bruge ... Ikke nødvendigvis lige til det her men mere generelt, idet man i udgangspunktet skal bruge det forhåndenværende biblotekk og ikke opfinde det dybevand og den varme tallerken ...

Det var på ingen måde en kritik af løsningen.

Jens Borrisholt
Avatar billede kroning Nybegynder
06. oktober 2008 - 12:30 #13
næ næ, opfattede det helle ikke som kritik men troede jeg måske havde misforstået noget.
Avatar billede hugopedersen Nybegynder
06. oktober 2008 - 15:12 #14
kroning> Trunc gjorde udslaget til noget fornuftigt.

Et svar tak :-)
Avatar billede borrisholt Novice
06. oktober 2008 - 15:16 #15
hugopedersen>>Du skal love mig at kigge DateUtils igennem inde du koder noget "selv". Man kunne jo forestille sig du skulle vide hvormange dage er det siden vi havde en bestemt dato. Så kan du bruge funktionen DaySpan, findes også får uger måneder og år ...

{ Range spanning functions }
{ YearSpan and MonthSpan are approximates, not exact but pretty darn close }
function YearSpan(const ANow, AThen: TDateTime): Double;
function MonthSpan(const ANow, AThen: TDateTime): Double;
function WeekSpan(const ANow, AThen: TDateTime): Double;
function DaySpan(const ANow, AThen: TDateTime): Double;
function HourSpan(const ANow, AThen: TDateTime): Double;
function MinuteSpan(const ANow, AThen: TDateTime): Double;
function SecondSpan(const ANow, AThen: TDateTime): Double;
function MilliSecondSpan(const ANow, AThen: TDateTime): Double;


Etc. Kig nu den unit igennem, selv om du ikke gider og kan gøre det senere ...

Jens B
Avatar billede hugopedersen Nybegynder
06. oktober 2008 - 15:20 #16
Jeg kigger i den jævnligt når jeg roder med datoer.
Men lige til dette formål er det 'kun' nødvendigt for mig at få en for for løbenummer til alle datoer. Så kan jeg nemmere linke mine data sammen i en query på MySQL. Det giver godt nok overhead i mine data, men det giver mig hastighed.
Avatar billede borrisholt Novice
06. oktober 2008 - 15:23 #17
Fint nok, jeg prædker bare :D Der er ritgit mange der ikkebruger den, men opfinde sine egne procedurere ... :(
Avatar billede kroning Nybegynder
06. oktober 2008 - 16:21 #18
Jeg bruger DateUtils rigtig meget, der er mange gode funktioner i den.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester