Avatar billede tjgrindsted Nybegynder
31. januar 2007 - 18:16 Der er 14 kommentarer og
1 løsning

datediff i asp.net

Jeg har et felt i min database som hedder DD-MM-YYYY

den henter jeg så ind i en Repeater på min asp.net side

men hvordan kan jeg så vist datediff på NOW og den jeg har i min database i år og mdr. så den ikke skrev 31-12-2005 men 1 År og 1 mdr.

hvordan kan jeg bruge DateDiff i dette eks. i ASP.NET
Avatar billede tjgrindsted Nybegynder
31. januar 2007 - 22:49 #1
Jeg kan komme så langt som til dette
<asp:Label ID="Label13" runat="server" Text='<%# ((DateTime.Now.Subtract(Eval("DogBorn"))).Days/30).ToString() %>' />

Men så skriver den 23,9666666666667 hvis DogBorn=11-02-2005

hvordan kan jeg lave de 23,9666666666667 om til 1 år og 11 måneder !?
Avatar billede dr_chaos Nybegynder
01. februar 2007 - 19:48 #2
prøv med:
<asp:Label ID="Label13" runat="server" Text='<%# ((DateTime.Now.Subtract(Eval("DogBorn"))).Days/30).ToString("dd-MM-YYYY") %>' />
Avatar billede tjgrindsted Nybegynder
02. februar 2007 - 20:36 #3
så får jeg denne fejl

Beskrivelse: Der opstod en undtagelse, der ikke blev behandlet, under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.FormatException: Inputstrengen var ikke i et korrekt format.

Kildefejl:


Linje 25:    <td width="10px"></td>
Linje 26:     <td width="58px" height="58px" background="images/thumbbackground.png"></td>
Linje 27:     <td width="222px" valign="top">&nbsp;&nbsp;Navn:&nbsp;<%#Container.DataItem("DogName")%><br />&nbsp;&nbsp;Køn:&nbsp;<%#Container.DataItem("DogSex")%><br />&nbsp;&nbsp;Alder:&nbsp;<asp:Label ID="Label1" runat="server" Text='<%# ((DateTime.Now.Subtract(Eval("DogBorn"))).Days/30).ToString("dd-MM-YYYY") %>' /></td>
Linje 28:
Linje 29: Years:<asp:Label ID="Label12" runat="server" Text='<%# ((DateTime.Now.Subtract(Eval("DogBorn"))).Days/365).ToString() %>' /><br />
Avatar billede lifo Nybegynder
02. februar 2007 - 22:37 #4
TimeStamp har mange properties
den nemmeste måde som jeg ved om er nok at lave en funktion i din klasse som modtager dogBorn og så returnerer en strent
noget ala
<asp:Label ID="Label13" runat="server" Text='<%# GetAge(Eval("DogBorn"))%>'


og så i din code behinde

public string GetAge(object obj)
    {  DateTime born = (DateTime)obj;
        TimeSpan age = DateTime.Now.Subtract(born);
        DateTime theRealAge = new DateTime(age.Ticks);
        return (theRealAge.Year-1)+ " år " + (theRealAge.Month -1)+ " måneder";
    }
Avatar billede tjgrindsted Nybegynder
03. februar 2007 - 10:54 #5
Hej Lifo

Jeg kan godt se hvad du vil men ikke få det til at virke, den kode du viser har jeg i min codebehind og label har jeg der hvor min gamle var.

i min database er DogBorn = DD-MM-YYYY

men jeg får denne fejl med koden, og fejlen er linje 9 siger VS2005.


Inputstrengen var ikke i et korrekt format.
Beskrivelse: Der opstod en undtagelse, der ikke blev behandlet, under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.FormatException: Inputstrengen var ikke i et korrekt format.

Kildefejl:


Linje 7:          Dim age As TimeSpan = DateTime.Now.Subtract(born)
Linje 8:          Dim theRealAge As New DateTime(age.Ticks)
Linje 9:          Return theRealAge.Year - 1 + " år " + (theRealAge.Month - 1) + " måneder"
Linje 10:    End Function 'GetAge
Linje 11: End Class
Avatar billede lifo Nybegynder
03. februar 2007 - 13:26 #6
så kan du gøre sådan her

DateTime born = DateTime.ParseExact(obj.ToString(),"dd-MM-yyyy", CultureInfo.CurrentCulture);
Avatar billede tjgrindsted Nybegynder
03. februar 2007 - 14:00 #7
ja nu kom den videre men den laver dog en fejl om CultureInfo den blev ikke erklæret er det fordi der skal et bestemt namespace til den !?

Fejl:
Beskrivelse: Der opstod en fejl under kompilering af en ressource, der er påkrævet ved behandling af denne anmodning. Læs følgende detaljer om fejlen, og foretag de nødvendige ændringer af kildekoden.

Fejlmeddelelse om kompileringsfunktion: BC30451: Navnet 'CultureInfo' er ikke blevet erklæret.

Kildefejl:



Linje 4: 
Linje 5:      Public Function GetAge(ByVal obj As Object) As String
Linje 6:          Dim born As DateTime = DateTime.ParseExact(obj.ToString(), "dd-MM-yyyy", CultureInfo.CurrentCulture)
Linje 7:          Dim age As TimeSpan = DateTime.Now.Subtract(born)
Linje 8:          Dim theRealAge As New DateTime(age.Ticks)
Avatar billede lifo Nybegynder
03. februar 2007 - 15:33 #8
ja det ligger i System.Globalization

om ud bruger visual studio 2005 så kan du sætte kurseren på CultureInfo så kommer en lille rød strege under
brug musen eller tryk på ALT + . (punktum) så kommer en lille boks op som foreslår at inkludere System.Globalization
Avatar billede tjgrindsted Nybegynder
03. februar 2007 - 16:59 #9
1. Det med ALT + . virker ikke, hvis jeg bruger musen siger den bare at CultureInfo er ikke declared, og der plejer at være et namespace for mit vedkommende.

2. Jeg har tilføjet det namespace og kommet lidt videre men får denne fejl.
Strengen blev ikke genkendt som en gyldig DateTime.
Beskrivelse: Der opstod en undtagelse, der ikke blev behandlet, under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.FormatException: Strengen blev ikke genkendt som en gyldig DateTime.

Kildefejl:


Linje 4: 
Linje 5:      Public Function GetAge(ByVal obj As Object) As String
Linje 6:          Dim born As DateTime = DateTime.ParseExact(obj.ToString(), "dd-MM-yyyy", CultureInfo.CurrentCulture)
Linje 7:          Dim age As TimeSpan = DateTime.Now.Subtract(born)
Linje 8:          Dim theRealAge As New DateTime(age.Ticks)
Avatar billede dr_chaos Nybegynder
03. februar 2007 - 23:21 #10
Dim born As DateTime = DateTime.ParseExact(obj.ToString(), "dd-MM-yyyy", System.Threading.Thread.CurrentThread.CurrentCulture)
Avatar billede tjgrindsted Nybegynder
04. februar 2007 - 01:23 #11
Hvis jeg gør dette:
Dim born As DateTime = DateTime.ParseExact(obj.ToString(), "dd-MM-yyyy", System.Threading.Thread.CurrentThread.CurrentCulture)
       
så får jeg denne fejl:

Strengen blev ikke genkendt som en gyldig DateTime.
Beskrivelse: Der opstod en undtagelse, der ikke blev behandlet, under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.FormatException: Strengen blev ikke genkendt som en gyldig DateTime.

Kildefejl:


Linje 4: 
Linje 5:      Public Function GetAge(ByVal obj As Object) As String
Linje 6:          Dim born As DateTime = DateTime.ParseExact(obj.ToString(), "dd-MM-yyyy", System.Threading.Thread.CurrentThread.CurrentCulture)
Linje 7:          Dim age As TimeSpan = DateTime.Now.Subtract(born)
Linje 8:          Dim theRealAge As New DateTime(age.Ticks)


OG hvis jeg gør dette:
Dim born As DateTime = DateTime.ParseExact(obj.ToString(), "dd-MM-yyyy hh:mm:ss", System.Threading.Thread.CurrentThread.CurrentCulture)

Så får jeg denne fejl:

Inputstrengen var ikke i et korrekt format.
Beskrivelse: Der opstod en undtagelse, der ikke blev behandlet, under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.FormatException: Inputstrengen var ikke i et korrekt format.

Kildefejl:


Linje 7:          Dim age As TimeSpan = DateTime.Now.Subtract(born)
Linje 8:          Dim theRealAge As New DateTime(age.Ticks)
Linje 9:          Return theRealAge.Year - 1 + " år " + (theRealAge.Month - 1) + " måneder"
Linje 10:    End Function 'GetAge
Linje 11: End Class
Avatar billede lifo Nybegynder
04. februar 2007 - 03:21 #12
så er det nok fordi din imput ikke er i det rigtige format
måsek er det null ??

hvat for en type er din dato fra databasen ?
er det en string eller datetime ?

sæt et break point på linje 7 og debug for at se hvad born er
Avatar billede tjgrindsted Nybegynder
04. februar 2007 - 10:36 #13
Min database er en MS Access 2003 og datoen er af Kort format men jeg kan godt lave den til DD-MM-YYYY HH:MM:SS og så glemme DD-MM-YYYY hvis det er nemmere.

Og feltet er ikke string = tekst det er af Dato&tid

hvad vil du vide fra Debug !?? jeg har kopier dette fra den.

-        System.Threading.Thread.CurrentThread    {System.Threading.Thread}    System.Threading.Thread
        born    #12:00:00 AM#    Date
-        obj    #6/7/2005# {Date}    Object
        Date    #6/7/2005#    Date
Avatar billede tjgrindsted Nybegynder
05. februar 2007 - 18:08 #14
sorry fandt selv fejlen det var + som skal være & i VB troede C# konverteren selv lavede det om men det gjorder den ikke, tak for hjælpen, vil du lægge et svar Lifo.
Avatar billede tjgrindsted Nybegynder
07. februar 2007 - 19:35 #15
Lifo du må skrive tilbage hvis du ønsker point men lukker.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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