Witam
wiem że to trochę niezgodne z regulaminem ale siedzę już nad tym tyle czasu że aż wstyd i proszę aby ktoś się ulitował i napisał jak od DateTime odjąć np. 8823 (88h23s) [???]
Pozdrawiam
DateTime.Subtract()
W PowerShellu wyglądało by to w tym stylu:
(new-object System.DateTime(2007,11,20,0,0,0)).Subtract([System.DateTime]::Now)
W C# nie mam teraz czasu sprawdzać, ale tworzysz sobie nowy obiekt podając mu te 88h i minuity w odpowiednich parametrach i od innej daty odejmujesz wywołując w niej metodę subtract.
DateTime d1 = new DateTime(2007, 06, 25, 3, 0, 0);
DateTime d2 = new DateTime(1, 1, 1, 5, 4, 5);
TimeSpan d3 = d1.Subtract(d2);
label4.Text = Convert.ToString(d3);
daje mi 73285055:55 :-/
zamień sobie 88h na dni (miesiące) i potem odejmij dwie daty
albo odejmij ręcznie, tzn now (czy co tam masz) zdekoduj na lata, miesiące, dni, godziny, minuty, sekundy, odejmiji to co masz odjąć i zakoduj z powrotem.
Pierwsze jest wg. mnie szybsze i poprawniejsze
Nie wiem jak w .NET ale w Win32 to wygląda tak:
_int64 Delta(const SYSTEMTIME st1, const SYSTEMTIME st2)
{
union timeunion {
FILETIME fileTime;
ULARGE_INTEGER ul;
} ;
timeunion ft1;
timeunion ft2;
SystemTimeToFileTime(&st1, &ft1.fileTime);
SystemTimeToFileTime(&st2, &ft2.fileTime);
return ft2.ul.QuadPart - ft1.ul.QuadPart;
}
ze strony: http://www.codeguru.com/forum/showthread.php?t=345294
tutaj dla C# znalazłem: http://www.c-sharpcorner.com/UploadFile/DipalChoksi/DateDiff_CS_DC09132006172429PM/DateDiff_CS_DC.aspx
Wielkie dzięki [!!!]
POZDROWIENIA [!!!]
ja nie wiem co wy tak kombinujecie...
DateTime nowaData = DateTime.Now.Subtract(new TimeSpan(88,46,23);
Wkoncu od DateTime mozna bez problemu odjac TimeSpana i otrzymac nowy DateTime. Wystarczy poczytac co intelisense Ci podpowiada, wkoncu po to to jest :)