Pregunta

Si lo hice

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

¿Cuál es la longitud máxima de cadena de MiResultado y es siempre el mismo tamaño?

¿Fue útil?

Solución

Un Int64 es un entero de 64 bits con signo, que significa que tiene un intervalo de valores de −9,223,372,036,854,775,808 a 9,223,372,036,854,775,807.

Desde toString no formatea su salida por comas, el valor más larga posible de la cadena sería −9223372036854775808 que es de 20 caracteres.

Ahora, puesto que se trata de representar una marca de tiempo UNIX que tenemos que tener en cuenta lo que se consideraría una fecha "razonable" para el retorno. Mientras escribo esto, un valor timestamp UNIX sería algo parecido a 1292051460, que es un número de 10 dígitos.

Si se asume una longitud máxima de 10 caracteres proporciona una gama de marcas de tiempo de -99999999 a 9999999999. Esto le da un rango de fechas de "Mon 31 Oct 1966 14:13:21 GMT" a "Sáb 20 Nov 2286 17:46:39 GMT". Tenga en cuenta que estoy incluyendo el símbolo de la negación como un personaje en el límite inferior, por lo que el límite inferior es mucho más cerca de la época que el límite superior.

Si no está esperando fechas antes de Halloween 1966 o después de finales de noviembre de 2286, se puede asumir razonablemente que la longitud de la cadena no será superior a 10 caracteres. Si usted está esperando fechas fuera de este rango (lo más probable pre-1966 en lugar de post-2286), se puede esperar ver una cadena de 11 caracteres. Yo no esperaría nada más que eso.

Esa es la máxima número de caracteres que puede esperar; podría ser más corto.

Otros consejos

Suponiendo que el código se utiliza mucho en el futuro sería la longitud máxima de un Int64.

Por ejemplo, en este momento que el valor es 1292022273 lo que la longitud sería de 10.

Se puede encontrar una calculadora que incluye los segundos aquí http://www.timeanddate.com/ fecha / duration.html

Si usted se pega con Convert.ToInt64() sin formato, a continuación, su longitud máxima será 20 , debido a que el mínimo es Int64 -9223372036854775808 (el signo negativo requiere un carácter adicional). En la práctica, sin embargo, no va a utilizar toda la gama ofrecida por Int64 debido a las limitaciones en TimeSpan y DateTime.

Y, no, la longitud de myResult no siempre será el mismo, pero puede variar de 1 a 20. Sólo depende del valor actual de Convert.ToInt64(ts.TotalSeconds).

Para obtener el tamaño máximo de la TimeSpan tratar de utilizar este código:

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

La esperanza que le ayudará con su pregunta! Buena suerte!

Saludos, Dima.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top