Я пишу приложение на 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
, так что я делаю не так?