06. oktober 2008 - 07:39Der 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.
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.
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.
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.
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.
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 ...
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 ...
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.
Jeg bruger DateUtils rigtig meget, der er mange gode funktioner i den.
Synes godt om
Ny brugerNybegynder
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.