Es gibt von Zeit zu Zeit immer mal wieder kleinere Darstellungsprobleme..

Im Aktuellen Fall sieht 154 Sekunden nicht so schön aus wie 2 Minuten und 34 Sekunden (00:02:34). Einem User einer Software kommt es also entgegen, wenn der Entwickler seinen „Grips“ mal ein wenig anstrengt du dem User das ein wenig aufbereitet ausgibt.

Ich habe vor einiger Zeit schon mal ein Ansatz gesehen, der mir aber definitive zu aufwendig war. Es ging hierbei um eine etwas längere Funktion die eigentlich auch nicht viel mehr gemacht hat also die  154 Sekunden durch 3600 Sekunden (3600s = 1 Stunde), dann den Rest durch 60 (Minuten) und den Rest als Sekunden darzustellen… Das ganze dann nun zusammengesetzt ergibt dann einen schönen „Zeit-Wert“ und eben eine etwas aufwendigere Funktion.

Nun, ich selber mache mir das Leben da hingegen meistens einfacher und grübel da noch ne weil um mit Zeichen zu sparen. mein Forscherdrang hat mich nun veranlasst sich auf die Suche zu machen und ich bin auch fündig geworden. Es handelt sich bei dem Aktuellen Problem um ein DateTime Problem somit habe ich mich mal – man glaubt es kaum – in die DateTime Klasse von VB.NET begeben und habe da meine Forschungen fortgesetzt.

Nun die erste Möglichkeit ist nun ein DateTime Objekt zu erstellen und es mit einem definierten Wert zu füllen und dort die Minuten einfach :

Dim zDate As DateTime
zDate = CType("01.01.1900 00:00:00", DateTime)
zDate.AddSeconds(154)
Dim mTimeString As String
mTimeString = zDate.ToString("HH:mm:ss")

Das ist mir aber ehrlich gesagt auch noch ein wenig zu lang… Ich will es noch kürzer und es geht auch noch kürzer! Beim stöbern in der DateTime-Klasse sind mit 2 sogenannte „Öffentliche Felder“ aufgefallen die das obere Script noch um einiges verkürzt:

MaxValue – Stellt den größtmöglichen Wert da
MinValue – Stellt den kleinstmöglichen Wert da

Der Schlüssel passt und das Script wird noch kürzer:

Dim mTimeString As String
mTimeString = DateTime.MinValue.AddSeconds(154).ToString("HH:mm:ss")

Ein „Einzeiler“ ist für mich akzeptabel und somit mein Favorit bei diesem Problem!

Was bitte bei dem ganzen Script bedacht werden sollte:
Ich spreche hier von Sekunden! Wenn nun mehr als 86.400 Sekunden auftauchen sollten ist der Wert dann nicht mehr  ganz richtig – denn 86.400 Sekunden sind 1 Tag und Tage werden in diesem Script NICH berücksichtig!

Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • del.icio.us
  • email
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • Live-MSN
  • MySpace
  • TwitThis
  • Ask
  • MisterWong