Question

Si je l'ai fait

// 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();

Quelle est la longueur de chaîne maximale de myResult et est-il toujours la même taille?

Était-ce utile?

La solution

Un Int64 est un entier signé de 64 bits, ce qui signifie qu'il a une plage de valeurs de −9,223,372,036,854,775,808 à 9,223,372,036,854,775,807.

Depuis toString ne formate pas sa sortie par des virgules, la plus longue valeur possible de la chaîne serait −9223372036854775808 qui est de 20 caractères.

Maintenant, puisque cela représente un horodatage UNIX que nous devons prendre en considération ce qui serait considéré comme une date « raisonnable » au retour. Comme je l'écris ces lignes, un horodatage UNIX actuel serait quelque chose proche de 1292051460, qui est un numéro à 10 chiffres.

En supposant une longueur maximale de 10 caractères vous donne une gamme de horodatages de -99999999 à 9999999999. Cela vous donne une fourchette de dates de « Lun 31 octobre 1966 14:13:21 GMT » à « Sam 20 novembre 2286 17:46:39 GMT ». Notez que je compris le symbole de la négation comme un caractère dans la limite inférieure, ce qui est la raison pour laquelle la limite inférieure est beaucoup plus proche de l'époque que la borne supérieure.

Si vous n'êtes pas attendre les dates avant Halloween 1966 ou après la fin de Novembre 2286, vous pouvez raisonnablement supposer que la longueur de la chaîne ne dépasse pas 10 caractères. Si vous attendez les dates en dehors de cette plage (très probablement pré-1966 plutôt que post-2286), vous pouvez vous attendre à voir une chaîne de 11 caractères. Je n'attendre plus que cela.

C'est le au maximum nombre de caractères à attendre; il pourrait être plus court.

Autres conseils

En supposant que le code est utilisé loin dans l'avenir, il serait la longueur maximale d'un Int64.

Par exemple, en ce moment que la valeur est 1292022273 donc la longueur serait 10.

Vous pouvez trouver une calculatrice qui comprend les secondes ici http://www.timeanddate.com/ Date / duration.html

Si vous restez avec Convert.ToInt64() sans formatage, votre longueur maximale sera 20 , parce que le Int64 minimum est -9223372036854775808 (le signe négatif exige un caractère supplémentaire). Dans la pratique, cependant, il ne sera pas utiliser toute la gamme offerte par Int64 en raison des limites TimeSpan et DateTime.

Et, non, la longueur de myResult ne sera pas toujours le même, mais peut varier de 1 à 20. Cela dépend de la valeur actuelle de Convert.ToInt64(ts.TotalSeconds).

Pour obtenir la taille maximale du TimeSpan essayer d'utiliser ce code:

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

Je espère que ça vous aidera à votre question! Bonne chance!

Cordialement, Dima.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top