webForumDet fria alternativet

DateDiff() i C#

8 svar · 524 visningar · startad av edebro

edebroMedlem sedan aug. 2001261 inlägg
#1

Det är grymt många VB.NET/VBScript-funktioner jag saknar i C#.
Bland annat funktionerna Left() och Right(). Iofs går detta att lösa med Substring(). Men hur som helst, till mitt problem.

Jag har ett datum som jag vill jämföra med dagens datum.
Om datumet är samma vill jag skriva ut "idag", är det gårdagens datum ska "igår" skrivas ut.
Är det något annat datum skrivs bara datumet ut i sin helhet.

Det jag eftersöker är altså en motsvarelse till VB.NETs DateDiff(), fast i C#.

Någon som vet hur jag löser detta på smidigaste sätt?

GladhMedlem sedan maj 20012 812 inlägg
DinoMedlem sedan sep. 20011 914 inlägg
#3
switch(DateTime.Compare(DateTime.Now, OwnDate))
{
   case -1 : // OmnDate > dagens datum
      Response.Write(OwnDate);
      break;
   case 0 :
      Response.Write("Idag"); // OmnDate == dagens datum
      break;
   case 1 :
      Response.Write("Igår"); //OmnDate < dagens datum
      break;
}

red// Såg inte att Gladh redan svarat. :)

GladhMedlem sedan maj 20012 812 inlägg
#4

switch satsen kommer inte att fungera eftersom den bara kollar om dagensdatum är större eller mindre än det andra, inte hur många dagar.

DinoMedlem sedan sep. 20011 914 inlägg
#5

Gladh skrev:

switch satsen kommer inte att fungera eftersom den bara kollar om dagensdatum är större eller mindre än det andra, inte hur många dagar.

Nä, det är inte någon C# version av DateDiff utan en (nu) funktion som möter trådskaparens beskrivning.

Jag har ett datum som jag vill jämföra med dagens datum.
Om datumet är samma vill jag skriva ut "idag", är det gårdagens datum ska "igår" skrivas ut.
Är det något annat datum skrivs bara datumet ut i sin helhet.

Uppdaterad kod:

public string Grr(DateTime CompareDate)
{
   DateTime a = DateTime.Now;
   string c = string.Empty;
   switch(DateTime.Compare(a, CompareDate))
   {
      case -1 : 
         c = CompareDate.ToString();
         break;
      case 0 :
         c = "Idag";
         break;
      case 1 :
         if(CompareDate == a.Subtract(TimeSpan.FromDays(1)))
         {
            c = "Igår";
            break;
         }
         goto case -1;
      }
   return c;
}

---

Response.Write(Grr(DateTime.Now.Subtract(TimeSpan.FromDays(1))));
GladhMedlem sedan maj 20012 812 inlägg
#6

Det var tur att du uppdaterade din kod, för din första switch sats skulle aldrig klarat av att göra vad trådskaparen ville.

- Magnus

DinoMedlem sedan sep. 20011 914 inlägg
#7

Älta inte i det förflutna. Se framåt, eller i alla fall till inlägg #714203. :birp

edebroMedlem sedan aug. 2001261 inlägg
#8

Tack för svaren. Jag ska se om jag får någon rätsida på detta nu.

Men visst håller ni med, vissa funktioner saknar man bra mycket i C#.

GladhMedlem sedan maj 20012 812 inlägg
#9

Just DateDiff() har jag faktiskt aldrig tänkt på eftersom jag inte behövt använda den själv än. Men helt klart så tycker jag det är en funktion som skall finnas med. Det finns faktiskt rätt många tillämpningar när man vill veta hur många dagar/månader/år det är mellan 2 datum.

Tycker det verkar konstigt om inte MS har någon smart lösning på problemet. Det är nog bara vi som inte vet hur :)

- M

138 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
134 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)