webForumDet fria alternativet
Logga in / Bli medlem

DateDiff() i C#

.NET

8 svar · 524 visningar · startad av edebro

Medlem sedan aug. 2001261 inlägg
Trådstart#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?

Medlem sedan maj 20012 812 inlägg
Medlem 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. :)

Medlem 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.

Medlem 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))));
Medlem 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

Medlem 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

Medlem 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#.

Medlem 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

270 ms totalt · 4 externa anrop · v20260731065814-full.81e7e81c
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)