Конвертировать с микросекунд в час, минуты, секунды и миллисекунды

Мне нужно перейти от микросекунд (сохраненных внутри переменной unsigned long long int ) к ее представлению в виде часов, минут, секунд, миллисекунд, то есть:

from 47072349659 to 13:04:32.350

Я нашел это преобразование с миллисекунд , но я не похоже, удалось заставить его работать в моем случае. Может быть, проблема в том, что номер слишком длинный для хранения в определенном типе переменной? Я использую unsigned long long int для ввода времени и пробовал int, long, unsigned long long int для выходов.

Вот мой код на C ++:

unsigned long long int timestamp;

long milliseconds   = (long) (timestamp/1000000) % 1000;
long seconds    = (long) ((timestamp/(1000)) % 60);
long minutes    = (long) ((timestamp/(60000)) % 60);
long hours      = (long) ((timestamp/(3600000)) % 24);
0
nl ja de
почему вы делите на 1 000 000, когда вам нужны миллисекунды. будет достаточно деления на 1 000.
добавлено автор artragis, источник
Какой язык? Показать код.
добавлено автор Jon, источник
Вы делаете что-то неправильно. Ручные вычисления показывают, что ваши номера в порядке, а 64-битное целое число определенно достаточно. Покажите нам свой код.
добавлено автор Alexey Frunze, источник
Любой язык. Я пишу на c ++, но мне просто нужен псевдокод. Я пытаюсь использовать код, показанный на ссылке, которую я предоставил, но она не работает в течение микросекунд.
добавлено автор ocramot, источник
Извините, я скопировал первый номер с неправильной строки. В любом случае я исправил числа, и я добавил свой код.
добавлено автор ocramot, источник
В основном потому, что я сделал несколько попыток, и я, должно быть, испортил номера в последнем ... во всяком случае, вы, кажется, работаете, спасибо.
добавлено автор ocramot, источник

1 ответы

Я думаю, ваша ошибка в ваших недостатках:

long milliseconds   = (long) (timestamp/1000) % 1000;
long seconds    = (((long) (timestamp/1000) - milliseconds)/1000)%60 ;
long minutes    = (((((long) (timestamp/1000) - milliseconds)/1000) - seconds)/60) %60 
long hours      = ((((((long) (timestamp/1000) - milliseconds)/1000) - seconds)/60) - minutes)/60
2
добавлено