Вопрос

Если бы я сделал это

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

Какая максимальная длина строки MyResult и всегда такого же размера?

Это было полезно?

Решение

INT64 - это подписанное 64-битное целое число, что означает, что он имеет ряд значений из −9,223,372,036,854,775,808 к 9,223,372,036,854,775,807.

С toString не отформатирует свой вывод запятыми, самое длительное значение строки будет −9223372036854775808 который длиной 20 символов.

Теперь, поскольку это представляет метку Unix Timestamp, нам нужно учитывать, что будет считаться «разумным» датой возвращения. Как я пишу это, текущий момент Unix Memestamp был бы что-то рядом с 1292051460, который является 10-значным числом.

Предполагая, что максимальная длина 10 символов дает вам ряд меток времени от -99999999 к 9999999999. Отказ Это дает вам ряд дат от «Mon, 31 Oct 1966 14:13:21 GMT» в «SAT, 20 ноября 2286 17:46:39 GMT». Обратите внимание, что я включаю символ отрицания в качестве символа в нижней границе, поэтому нижняя граница намного ближе к эпохе, чем верхняя граница.

Если вы не ожидаете, что даты до Хэта в Хэллоуин 1966 года или после конца ноября 2286 года вы можете разумно предположить, что длина строки не превышает 10 символов. Если вы ожидаете, даты за пределами этого диапазона (скорее всего, Pre-1966, а не пост-2286), вы можете ожидать, чтобы увидеть строку 11 символов. Я бы не ожидал большего, чем это.

Это максимум количество символов для ожидаемого; Это может быть короче.

Другие советы

Предполагая, что код используется далеко в будущее, это будет максимальная длина INT64.

Например, сейчас, когда значение составляет 1292022273, поэтому длина будет 10.

Вы можете найти калькулятор, который включает в себя здесь секунды http://www.timeanddate.com/date/duration.html.

Если вы держитесь с Convert.ToInt64() без форматирования, то ваша максимальная длина будет 20, потому что минимум Int64 является -9223372036854775808 (Отрицательный знак требует дополнительного персонажа). На практике, однако, это не будет использоваться весь ассортимент, предоставляемый Int64 Из-за ограничений в TimeSpan а также DateTime.

И нет, длина myResult не всегда будет одинаковым, но может варьироваться от 1 до 20. Это просто зависит от текущей стоимости Convert.ToInt64(ts.TotalSeconds).

Чтобы получить максимальный размер TimeSpan, попробуйте использовать этот код:

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

Надеюсь, это поможет вам с вашим вопросом! Удачи!

С уважением, Дима.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top