Предмет: Информатика, автор: MrMiner1

Язык: C++.
ОС: Ubuntu (Linux)

Требуется написать программу, которая выводит текущее время в десятичном формате в случае, если бы текущее местоположение было на гринвичском меридиане (время, отображающееся на компьютере не обязательно соответствует 0 часовому поясу).

Входные данные: отсутствуют.

Выходные данные: текущее время в UTC +0 в десятичном формате.


DigitalAnnihilator: Это уже дичь если честно но написать можно, это очень странный формат, тебя тогда интересует не просто десятичный, а к тому же и дробный.
DigitalAnnihilator: нет, это не time
Аноним: Посмотрел стандарт ISO 8601, юникс тайм - время без UTC смещения, т.е. на двух машинах в разных частях света в одно время time вернёт одно и то же значение
MrMiner1: unsigned long long int a = time(0); да, присваивает переменной время юникс тайм в секундах UTC 0. Реализовывал через это. Но слишком давно. Тогда изучать язык только начинал и сама программа получилась достаточно большой и не оптимальной. При этом в данной программе выполнялся и другой функционал, так что там вообще ничего не разобрать. Единственное - в переменных hour, min, sec находились корректные и требуемые значения.
DigitalAnnihilator: Привет
DigitalAnnihilator: Ещё раз)_
DigitalAnnihilator: Я написал, смотри, программа считает кол-во секунд с полночи до текущего момента.
DigitalAnnihilator: То есть целочисленное значение
DigitalAnnihilator: Тебе такое надо?
MrMiner1: Я параллельно тоже с нуля ее сейчас пишу. Нахожусь на этом же этапе выполнения. Требуется число типа double. То есть, например, если время на компьютере UTC +3 - 19:45:00 - в переводе на UTC 0 оно равно 16:45:00. Выводится 16.75.

Ответы

Автор ответа: DigitalAnnihilator
0

В ответе я использовал CTIME библиотеку, если возникают вопросы почему именно её, то по нескольким причинам:

  • Самое высокая скорость работы по сравнению с C++ библиотеками, а её функционал полнойстью покрывает нужды.
  • В данном случаи используются достаточно прозрачные с точки зрения нейминга функции. Код будет хорошо читабилен.

К слову об указателе в функции getSecondsSinceUTCMidnight, не нужно беспокоиться об управлении памятью в данном случаи, за тебя это сделает функционал библиотеки.

Спасибо за отметку лучший ответ.

Приложения:
Похожие вопросы