Unix время странность, или что-то еще? - PullRequest
0 голосов
/ 19 августа 2011

Я пишу приложение на C #, которое вызывает методы стороннего веб-сервиса (но этот вопрос не зависит от языка). Один из методов, которые мне нужно вызвать, устанавливает «время начала». Метод ожидает, что дата и время будут переданы как длинные, в формате времени Unix (секунды с полуночи 1/1/70).

Примеры кода, которые я получил от своей команды разработчиков, используют функцию Java getTime(), которая, насколько я могу судить, действительно возвращает long, представляющий время Unix. Так, например, если я хочу установить время начала 2/28/11 at 5pm, я бы передал его 1298912400. Однако это не работает. Их служба не возвращает ошибку, но если я посмотрю веб-интерфейс для подтверждения, время запуска будет пустым.

Теперь, если я использую их веб-интерфейс, чтобы вручную установить время запуска на 2/28/11 at 5pm, их журнал показывает его как 1298930400000. Во-первых, это число на 3 цифры длиннее, а во-вторых, даже если я уберу лишние нули, число равно 2/28/11 but at 11pm.

Итак, мой вопрос: они делают что-то внутренне, о чем я не знаю, или я упускаю что-то, на что кто-то здесь может указать мне?

Обновлено для добавления кода:

TimeSpan ts = (new DateTime(2011, 2, 28, 17, 0, 0, DateTimeKind.Utc) - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc));
long goodtime = (long)ts.TotalMilliseconds;

Это возвращает 1298912400000 для меня, но они говорят, что это должно быть 1298930400000, так что я делаю не так?

1 Ответ

3 голосов
/ 19 августа 2011

Они используют миллисекунды, и вы, вероятно, не компенсируете часовой пояс.

...