Почему DateTime to Unix time использует двойное число вместо целого числа? - PullRequest
10 голосов
/ 06 марта 2011

Мне нужно преобразовать DateTime в метку времени Unix. Так что я гуглил он искал пример кода

Почти во всех результатах, которые я вижу, они используют double в качестве возврата для такой функции, даже когда явно используют floor для преобразования ее в целое число. Временные метки Unix всегда целые. Так в чем же проблема с использованием long или int вместо double?

static double ConvertToUnixTimestamp(DateTime date)
{
    DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
    TimeSpan diff = date - origin;
    return Math.Floor(diff.TotalSeconds);
}

Ответы [ 4 ]

4 голосов
/ 06 марта 2011

Обычно я реализую его с беззнаковым длинным вместо того, чтобы требовать, чтобы пользователь округлял вверх или вниз и приводил к int или long.Одна из причин, по которой кому-то может потребоваться удвоение, заключается в том, что используется структура, аналогичная timeval, например, в gettimeofday Это позволяет с точностью до секунды ...

3 голосов
/ 06 марта 2011

Чтобы избежать ошибки 2038 в 32-битных системах?

1 голос
/ 06 марта 2011

Двойные числа охватывают больше земли, чем любая другая переменная в типе int.

0 голосов
/ 29 июля 2016

Это не вопрос "лет".но часов на разумной (ых) машине (ах), правильно связанной.

Но можете ли вы представить себе, как собирается огромное хранилище?У меня около 30 ТБ данных, и это забивает меня - я трачу больше времени на каталогизацию, чем на фактическую работу.

Удачи в ваших начинаниях

...