Powershell: Wyznaczanie różnicy w czasie

28-Sie-2016

Do pracy z czasem masz w Powershell dwa typy:

  • DateTime
  • TimeSpan

DateTime to prosta sprawa, ale co to jest TimeSpan? Timespan to właśnie ilość czasu jaki upłynął między dwoma punktami w czasie. Tę różnicę można wyrazić w godzinach, minutach, sekundach albo w… tickach. Tick to najmniejsza jednostka z jaką pracuje ten typ. Popatrz na przykłady:

Wynik odejmowania dwóch obiektów typu DateTime to TimeSpan

wynik to

Jakie właściwości ma TimeSpan?

Kilka podstawowych to np. minutes, seconds, ticks. Jeśli zapytać ile minut i sekund minęło pomiędzy powyżej zadeklarowanymi punktami czasu, to okaże sie, że 3 minuty i 0 sekund. A co jeśli wynik ma przedstawić czas w sekundach? Czy czeka nas mnożenie ilości dni *24*60*60 plus ilość godzin*60*60 plus ilość minut*60 ? Nie. Do tego można się posłużyć właściwością TotalSeconds! Popatrz na przykład:

Wynik to:

3 minuty i 0 sekund lub po prostu 180 sekund lub 1800000000 tick-ów.

Do typu DateTime możesz dodawać TimeSpan

Znowu popatrz na przykład:

oto wynik:

Dla typu DateTime skorzystaliśmy z metody Add, która jako argument przyjęła utworzony właśnie obiekt typu TimeSpan. TimeSpan ma szereg konstruktorów, które pozwolą tworzyć ten typ z godzin, minut, sekund itp. W praktyce z tej metody skorzystasz jednak tylko wtedy, gdy akurat w skrypcie posiadasz obiekt typu TimeSpan, który zechcesz dodać do DateTime, bo przecież jeśli do DateTime chcesz dodać np 5 minut, to o wiele prościej zrobisz to tak:

Cmdlet New-Timespan

Dla tych, którzy nie lubią deklarowania typów metodami znanymi z .NET i woleliby bardziej PowerShellową metodę, deklarację typu TimeSpan można zamienić na:

wynik można jak zwykle zapisać w zmiennej:

a potem korzystać z niej tak, jak robiliśmy to do tej pory:

 

Dodaj komentarz:

Autor: admin