05. oktober 2011 - 13:19Der er
31 kommentarer og 1 løsning
læg minuter til en dato
Jeg har en string der indeholder dato og tid i følgende format:
19-09-2011 08:00:00
så har jeg en anden string der indeholder et tal, f.eks. 450, hvordan lægger jeg dette til min dato string, som minuter? og der efter kun printer den tid der bliver lavet?
Jeg går ud fra at du har den første dato, som en string. Du kunne evt. prøve at kigge på klassen DateTime. Så er det nemlig bare at .AddMinutes på datoen :)
DateTime dato = new DateTime(2011,09,19,0,0,0); dato.AddMinutes(450);
det er bare en slå fejl her inde, i koden er det rigtigt: minstreng.Append(string.Format("{0} - {1} - Varighed: {2} Min.", kalenderdata.Date, kalenderdata.Name, kalenderdata.Date.AddMinutes(kalenderdata.Varighed)));
der ud over er der jo også problemet, med den KUN skal skrive klok, og ikke fuld dato osv.
kalenderdata.Date.AddMinutes(kalenderdata.Varighed).ToShortTimeString())); dette virker så faktisk super godt, sku lige læse lidt op. Jeg takker for hjælpen, i bør nok deles om point eller?
Det må have noget at gøre med andet af din kode, for Take(1) returnerer blot 1 række (det præcis samme som FirstOrDefault gør), og strongTypedLines koden ændrer sig ikke af at du bruger Take.
Men har du prøvet at debugge koden? Rent faktisk se hvad den forsøger at skrive ud? Sæt et breakpoint på linjen med foreach, og 1) se hvad "strongTypedLines" faktisk indeholder, og 2) tryk F10 og se om du faktisk kommer ind i din foreach kode.
ja hvis jeg gør det, kan jeg se det indeholder godt nok data, og det rigtige data. Det der undre mig, hvis jeg bruger take på koden hvor jeg ikke sortere efter dato, virker det fint. Men jeg må vel rode lidt med det.
Du kan jo sætte et breakpoint i din "else" del, så kan du se at du havner der. Hvis du gør, skyldes det at "DateTime.Now <= kalenderdata.Date" returnerer false, hvilket er det samme som at sige, at datoen ikke ligger i fremtiden.
hmm der ligger over 200 linier if delen af koden, hmmm er der ikke en måde at sætte en limit på if delen så den bare kun skriver engang der? eller så skal det hele måske flyttes ud af foreach?
Så du mener hvis jeg ændre if til en when, så vil det kunne løse det? hen af
when (DateTime.Now <= kalenderdata.Date) { minstreng.Append(string.Format("{0} - {1} - Slut Tid: {2} Min.", kalenderdata.Date, kalenderdata.Name, kalenderdata.Date.AddMinutes(kalenderdata.Varighed).ToShortTimeString())); minstreng.Append(System.Environment.NewLine);
?
det jeg enlig forsøger at opnå er noget med jeg har møde tid, og møde varrighed, på den måde kan jeg regne ud hvornår det slutter, jeg vil enlig bare have den til at skrive når der er møde, hvis det giver mening?
Error 1 foreach statement cannot operate on variables of type 'int' because 'int' does not contain a public definition for 'GetEnumerator' W:\Script sjov\Møde sjov\Møde sjov\meeting\Form1.cs 121 13 meeting
Det var heller ikke meningen du skulle bruge den i en foreach, men sætte et break point, og se hvad værdien af den var.
Du siger jo den ikke indeholder noget, men det tvivler jeg stærkt på. Jeg tror du ikke helt forstår din egen kode.
Hvis du har mange datoer ... og kun tager 100 poster, og de allesammen er fra fortiden, så vil din foreach jo aldrig virke, da den altid kommer ind i den tomme block. Da du netop sortere efter ældre post først ... og derefter tager 100.
nu har jeg lige tjekket igen med et breakpoint, og "lines" indeholder alle linierne, strongtypelines lige så. minstreng er tom.
men hvis jeg kun vil have dne første linie efter jeg har sorteret på dato hvordan vil du så gøre det? Der må da være en måde at den kun skal skrive et resultat i:
if (DateTime.Now <= kalenderdata.Date) { minstreng.Append(string.Format("{0} - {1} - Slut Tid: {2} Min.", kalenderdata.Date, kalenderdata.Name, kalenderdata.Date.AddMinutes(kalenderdata.Varighed).ToShortTimeString())); minstreng.Append(System.Environment.NewLine);
}
der ud over, er det muligt at lave en if sætning eller sådan, der regegere hvis tiden er imellem 2 tidspunkter?
Du kan jo heller ikke sammenligne USD & DKR uden at kende kursen for de to.
Her ved den jo ikke hvordan den skal behandle din string for at lave til en dato eller hvordan den skal lave din dato til en string. Du kan eventuelt overload <= operator.
Jeg ville nok tage og convert din string til en DateTime.
jo den gjorde den.. løste det ved at sige datetime string.. :) tak for tålmodigheden.
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.