Zmiana znaku i formatowanie w TimeSpawn

Zmiana znaku i formatowanie w TimeSpawn
GO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

1.Czy jest możliwość zmiany znaku w otrzymanym TimeSpan na potrzeby wpisu do bazy. Matematycznie wychodzi dobrze ale mam wyjątkowy przypadek ze otrzymany wynik ma być z minusem jeżeli TimeSpan wychodzi na plus i ujemny jezeli TimeSpan jest dodatni Może prościej będzie tak: wyszło mi TimeSpan np -8,30,00 a ma być 8,30,00.
2. Co poprawić aby zmienić formatowanie bo obecnie wychodzi mi np coś takiego -8 h -35 min a ma byc -8 h 35 min)

Kopiuj
  TimeSpan wyn3 = span1 - span6;
                string roznica3 = string.Format("{0} h {1} min",
            ((int)wyn3.TotalHours), wyn3.Minutes);
                textBox14.Text = roznica3;
Zellus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 474
0
  1. Pomnożyć przez -1 ?
  2. Pomnożyć drugi przez -1, albo lepiej abs()
Zellus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 474
2

http://msdn.microsoft.com/pl-pl/library/system.timespan.aspx
TotalDays, minutes etc. to zwykłe inty/double więc bez problemu możesz je mnożyć

I na pytanie pierwsze, jest metoda negate:
http://msdn.microsoft.com/pl-pl/library/system.timespan.negate.aspx

#edit

Funkcja abs będzie chyba działać tylko przypadku wyniku z minusem, a gdy wynik dodatni to zmieni znak na minus?

abs(wartość bezwzględna) zamienia ujemne na dodatnie, czyli w momencie jak chcesz wyświetlić -8 h 35 min zamiast -8 h -35 min sprawdzi się najlepiej

#edit
TotalHours zwraca double, Hours zwraca inta, lepiej zamiast rzutować double na int od razy pobrać Hours

GO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Nie wiem czy robie cos zle ale negate() nic mi nie zmienia ;)

Kopiuj
 TimeSpan wyn3 = span1 - span6;
          wyn3.Negate()
          string roznica3 = string.Format("{0} h {1} min",
         ((int)wyn3.TotalHours), wyn3.Minutes);
         textBox14.Text = roznica3;
Zellus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 474
1

Zwraca nowy TimeSpan obiekt, którego wartość jest wartością zanegowane tego wystąpienia.

Czyli innymi słowy ta metoda nie edytuje obecnego timespana, a tylko zwraca wartość po negacji. Możes zzrobić np.

Kopiuj
   wyn3=wyn3.Negate()

PS. Nie posiadam u siebie kompilatora c# i nie mogę teraz tego sprawdzić, ale tak wynika z tego co napisane jest w linku.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.