Domanda

Se ho fatto questo

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

Qual è la lunghezza massima della stringa di myResult ed è sempre la stessa dimensione?

È stato utile?

Soluzione

Un Int64 è un intero a 64 bit con segno, che significa che ha un intervallo di valori da −9,223,372,036,854,775,808 a 9,223,372,036,854,775,807.

Poiché toString non formatta la sua uscita con una virgola, il più lungo possibile valore della stringa sarebbe −9223372036854775808 che è lungo 20 caratteri.

Ora, dal momento che questo è che rappresenta un timestamp UNIX abbiamo bisogno di prendere in considerazione ciò che potrebbe essere considerato una data "ragionevole" per il ritorno. Mentre scrivo questo, una corrente timestamp UNIX sarebbe qualcosa di simile a 1292051460, che è un numero di 10 cifre.

si Ipotizzando una lunghezza massima di 10 caratteri offre una gamma di timestamp da -99999999 a 9999999999. Questo vi dà un intervallo di date da "Mon, 31 Ottobre 1966 14:13:21 GMT" a "Sat, 20 Nov 2286 17:46:39 GMT". Nota che sto tra cui il simbolo della negazione come un personaggio del limite inferiore, motivo per cui il limite inferiore è così molto più vicino all'epoca rispetto al limite superiore.

Se non vi aspettate date prima di Halloween 1966 o dopo la fine di novembre 2286, si può ragionevolmente supporre che la lunghezza della stringa non superare i 10 caratteri. Se vi aspettate date al di fuori di questo intervallo (molto probabilmente pre-1966, piuttosto che post-2286), ci si può aspettare di vedere una stringa di 11 caratteri. Non mi aspetto più di questo.

Questo è il massima numero di caratteri da aspettarsi; potrebbe essere più breve.

Altri suggerimenti

Supponendo che il codice viene utilizzato anche in futuro sarebbe la lunghezza massima di un Int64.

Ad esempio, in questo momento che il valore è 1.292.022,273 mila così la lunghezza sarebbe 10.

È possibile trovare una calcolatrice che include i secondi qui http://www.timeanddate.com/ data / duration.html

Se si bastone con Convert.ToInt64() senza formattazione, allora la vostra lunghezza massima sarà 20 , perché il Int64 minimo è -9223372036854775808 (il segno negativo richiede un carattere aggiuntivo). In pratica, tuttavia, esso non utilizzare l'intera gamma offerta dalla Int64 causa di limitazioni per TimeSpan e DateTime.

E, no, la lunghezza di myResult non sarà sempre lo stesso, ma può variare da 1 a 20. E 'appena dipende dal valore corrente della Convert.ToInt64(ts.TotalSeconds).

Per ottenere la dimensione massima del TimeSpan cercare di utilizzare questo codice:

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

La speranza che vi aiuterà con la tua domanda! Buona fortuna!

Con i migliori saluti, Dima.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top