Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
DmitryBond
2 / 2 / 3
Регистрация: 08.07.2014
Сообщений: 34
1

Преобразование double во время (char) год, месяц, день, часы секунды, минуты

28.11.2016, 21:33. Просмотров 1126. Ответов 9
Метки нет (Все метки)

Здравствуйте, форумчане. Подскажите как получить текущее время, сохранить его в double, а потом преобразовать скажем в строку char*. Есть много разных решений и библиотек. Есть ли решение универсальное для Windows и Unix.
У меня есть метод класса createLog, один из параметров time типа double хочу туда передать текущее время, а потом мне надо эту структуру записать в файл, но время time нужно записать в читабельно форме, месяц, год, день недели, часы, мин, сек. Как time преобразовать в строку вручную, не используя библиотеки.

C++
1
2
3
4
5
6
7
 struct inf
        {
             double time;        //* время, 
             int layer;          //* уровень
             int number_string;  //* номер строки,
             char file_name[24]; //* имя файла, 
        };
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void CLogger::createLog(const char* file_name, \
                                int len_fname, \
                             double time,      \
                                int layer,     \
                                int num_str,   \
                        const char* msg,       \
                                int len_msg)
{   
    inf dop_log;
    strcpy (dop_log.file_name,file_name);
    dop_log.layer = layer;
    dop_log.number_string = num_str;
    dop_log.time = time;
    addLog(dop_log,msg, len_msg);
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2016, 21:33
Ответы с готовыми решениями:

Определить текущий день недели, год, месяц, число, а также текущее время-часы, минуты, секунды, сотые доли секунды.
1. Составить программу на языке Си , используя функций прерывания 21h. Определить текущий день...

Написать класс Время (часы, минуты, секунды)
Написать класс Время(часы, минуты, секунды). Написать методы вывод введенного времени и подсчета...

Описать структуру «время» (часы, минуты, секунды)
Описать структуру «время» (часы, минуты, секунды). Определить функцию «позже» для проверки,...

Создать класс время с данными-членами часы, минуты, секунды
отучилась на программиста уже год, но пока что как-то тяжко с заданиями, тем более с классами, не...

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

9
alex white
272 / 224 / 91
Регистрация: 27.06.2016
Сообщений: 635
Завершенные тесты: 1
28.11.2016, 21:36 2
DmitryBond, почему именно double? Чем целочисленное не устраивает?
0
GbaLog-
Любитель чаепитий
3177 / 1480 / 468
Регистрация: 24.08.2014
Сообщений: 5,222
Записей в блоге: 1
Завершенные тесты: 2
28.11.2016, 21:41 3
Цитата Сообщение от DmitryBond Посмотреть сообщение
C++
1
2
3
4
5
6
7
void CLogger::createLog(const char* file_name, \ // <---
* * * * * * * * * * * * * * * * int len_fname, \ // <---
* * * * * * * * * * * * * * *double time, * * *\ // <---
* * * * * * * * * * * * * * * * int layer, * * \ // <---
* * * * * * * * * * * * * * * * int num_str, * \ // <---
* * * * * * * * * * * * const char* msg, * * * \ // <---
* * * * * * * * * * * * * * * * int len_msg)
Это не макрос, С++ допускает многострочные объявления.
0
DmitryBond
2 / 2 / 3
Регистрация: 08.07.2014
Сообщений: 34
28.11.2016, 21:48  [ТС] 4
alex white, потому что принято хранить в double , до запятой год, месяц, день, после час, мин, сек.
0
28.11.2016, 21:48
nmcf
6528 / 5752 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
28.11.2016, 22:06 5
Где так принято? Там может точность пострадать.
0
DmitryBond
2 / 2 / 3
Регистрация: 08.07.2014
Сообщений: 34
28.11.2016, 22:33  [ТС] 6
так хранится время, количество секунд прошедшее с 1 января 1970 года этот формат принят в системе Unix. Я не хочу эту тему больше обсуждать. Есть задача тип хранения предложенный мной double. Это не суть проблемы, нужно текущее время передать в функцию хранить в структуре, а потом писать в файл. Я задачу эту решал на C# там есть замечательный компонент, позволяет обрабатывать этот формат данных double, решал при помощи библиотек qt. Есть удобная структура time_t в time.h, но это для Unix, позволяет сохранять и передавать в строку. нужно универсальное решения для windows и Unix, вот решение в Unix

C++
1
2
3
    time_t seconds = time(NULL);
    tm* timeinfo = localtime(&seconds);
    cout<<"Current Datetime:"<<asctime(timeinfo)<<endl;
asctime возвращает char*
Вывод;
Current Datetime:Mon Nov 28 21:44:30 2016
0
GbaLog-
Любитель чаепитий
3177 / 1480 / 468
Регистрация: 24.08.2014
Сообщений: 5,222
Записей в блоге: 1
Завершенные тесты: 2
28.11.2016, 22:47 7
Лучший ответ Сообщение было отмечено DmitryBond как решение

Решение

Цитата Сообщение от DmitryBond Посмотреть сообщение
вот решение в Unix
Вы не поверите, но это кроссплатформенное решение.
Эти функции и структуры входят в стандарт языка С++.
http://en.cppreference.com/w/cpp/chrono/c/asctime
http://en.cppreference.com/w/cpp/chrono/c/localtime
http://en.cppreference.com/w/cpp/chrono/c/time_t
http://en.cppreference.com/w/cpp/chrono/c/tm
1
DmitryBond
2 / 2 / 3
Регистрация: 08.07.2014
Сообщений: 34
28.11.2016, 22:54  [ТС] 8
GbaLog- , честно говоря у нас один умник на работе утверждал, что time_t это решение используется только в Unix, спасибо это решает проблему. Я сейчас попробую.
0
nmcf
6528 / 5752 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
28.11.2016, 23:11 9
Цитата Сообщение от DmitryBond Посмотреть сообщение
этот формат принят в системе Unix... Я не хочу эту тему больше обсуждать... Это не суть проблемы
Серьёзно? Где это там double используется? Если бы ты знал в чём суть, то такую ерунду не писал бы.
0
DmitryBond
2 / 2 / 3
Регистрация: 08.07.2014
Сообщений: 34
29.11.2016, 00:02  [ТС] 10
Уважаемый nmcf, я не буду обсуждать всякие глупости, double не используется, я не это имел ввиду, я хотел использовать double , как вариант для хранения времени, читайте внимательно и желательно сначала. Если у вас нет предложений по решению то не стоит загаживать эту тему комментариями, они никому не интересны. Если я был не точен можно сказать об этом, если вы знаете в чём суть можете здесь рассказать.
Есть замечательное правило. если критикуешь, то предлагаешь. Используйте вам пригодится в будущем.
0
29.11.2016, 00:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2016, 00:02

Описать структуру «время» (часы, минуты, секунды). Определить функцию «следующая минута»
Привет ребят, вот такая задачка, голову ломаю ничего понять не могу: Описать структуру «время»...

Функция получает время в виде трех целых аргументов (часы, минуты, секунды) и возвращает количество секунд с момента, ко
Функция получает время в виде трех целых аргументов (часы, минуты, секунды) и возвращает количество...

Как перевести секунды в часы, минуты и секунды
Помогите составить программу, которая будет переводить секунды (произвольное целое число) в часы,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru