Frage

Wenn ich es dieses

// Default implementation of UNIX time of the current UTC time
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string myResult = "";
myResult = Convert.ToInt64(ts.TotalSeconds).ToString();

Was ist die maximale Stringlänge von MyResult und ist es immer die gleiche Größe?

War es hilfreich?

Lösung

Int64 ist eine vorzeichenbehaftete 64-Bit-Ganzzahl, das heißt, es einen Bereich von Werten von −9,223,372,036,854,775,808 bis 9,223,372,036,854,775,807 hat.

Da toString nicht seine Ausgabe nicht formatiert werden mit Kommata, die längste mögliche Wert der Zeichenfolge −9223372036854775808 sein würde, die lange 20 Zeichen ist.

Nun, da dies entspricht einen UNIX Zeitpunkt müssen wir berücksichtigen, was ein „angemessenes“ Datum zurückzubringen, in Betracht gezogen werden würde. Während ich dies schreibe, würde ein aktueller UNIX Zeitpunkt etwas in der Nähe 1292051460 sein, die eine 10-stellige Zahl.

eine maximale Länge von 10 Zeichen Unter der Annahme, gibt es eine Reihe von Zeitstempel von -99999999 zu 9999999999. Dies gibt Ihnen eine Reihe von Daten von „Mo, 31. Oktober 1966 14.13.21 GMT“ bis „Sa 20. November 2286 17.46.39 GMT“. Beachten Sie, dass ich mit der Negation Symbol als ein Zeichen in der unteren gebunden, weshalb die untere Grenze so viel näher an der Epoche als die obere Grenze.

Wenn Sie nicht Daten vor Halloween 1966 oder nach dem Ende November 2286 erwarten, können Sie davon ausgehen, dass die Länge der Zeichenfolge 10 Zeichen nicht überschreiten. Wenn Sie Termine außerhalb dieses Bereichs (höchstwahrscheinlich vorge 1966 statt post-2286) erwarten, können Sie erwarten eine 11-Zeichenfolge zu sehen. Ich würde nicht erwarten, mehr jeder als das.

Das ist das Maximum Anzahl der Zeichen zu erwarten; es könnte kürzer sein.

Andere Tipps

wird den Code Unter der Annahme, weit in die Zukunft verwendet, es würde die maximale Länge eines Int64 sein.

Zum Beispiel gerade jetzt dieser Wert 1292022273 so die Länge 10 sein würde.

Sie können einen Rechner finden, die die Sekunden hier http://www.timeanddate.com/ Datum / duration.html

Wenn Sie mit Convert.ToInt64() ohne Formatierung bleiben, dann wird Ihre maximale Länge wird 20 , da die Mindest Int64 ist -9223372036854775808 (das negative Vorzeichen erfordert ein zusätzliches Zeichen). In der Praxis wird es jedoch nicht das gesamte Spektrum von Int64 gewährt nutzt wegen der Beschränkungen in TimeSpan und DateTime.

Und, nein, die Länge des myResult nicht immer gleich sein, kann aber im Bereich von 1 bis 20. Es hängt nur von dem aktuellen Wert von Convert.ToInt64(ts.TotalSeconds).

Um maximale Größe des Timespan zu erhalten versuchen, diesen Code zu verwenden:

var maxValue = Convert.ToInt64(TimeSpan.MaxValue).ToString();

Hope wird es Ihnen mit Ihrer Frage helfen! Viel Glück!

Mit freundlichen Grüßen, Dima.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top