Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 18

Функция, получающая формат даты и времени в виде параметра

07.09.2015, 16:04. Показов 2086. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужна функция получающая формат даты и времени в виде параметра и возвращающая дату и время в виде строки. Изучая Си написал следующую функцию:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
char *CurrentTime(char *TimeFormat)
{
        long int s_time;
        struct tm *m_time;
        char *str_t=malloc(128);
        s_time = time(NULL);
        m_time = localtime (&s_time);
        strftime(str_t, 128, TimeFormat, m_time);
        return str_t;
}
...
CurrentTime("%d/%m/%y_%T");
...
Всё отлично работало. Решил переписать программу на С++. В таком виде в g++ даже не компилируется. Пытался заменить указатели на string - ошибок только больше стало
PS. Нужна кроссплатформенная реализация.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.09.2015, 16:04
Ответы с готовыми решениями:

Формат даты, времени
Добрый вечер, подскажите как вывести поле time в формате "часы: минуты", без секунд, знаю что есть формат date('Y-m-d H:i'), но мне нужно...

Формат времени и даты
Писал код в билдере, надо реализовать тоже самое в VS CLI... TVarRec Time={bufrd,bufrd,bufrd}, ...

Формат даты и времени
Всем привет! Имею вот такой форматы даты и времени: date("d.m.Y H:i", strtotime("{$row}")); На выходе имеем "19.12.2013...

8
529 / 432 / 159
Регистрация: 25.11.2014
Сообщений: 1,662
07.09.2015, 16:46
C++
1
char *str_t=(char*)malloc(128);
1
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
07.09.2015, 18:47
Лучший ответ Сообщение было отмечено f3nix как решение

Решение

char *TimeFormat const char *TimeFormat
char *str_t=malloc(128); char *str_t=new char[128];
1
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
07.09.2015, 19:40
f3nix, какая ошибка выходит? Если ошибка преобразования void* в char*, сделайте, как написал Velesthau.

Цитата Сообщение от Renji Посмотреть сообщение
const char *TimeFormat
А разве это имеет значение? strftime все равно читает эту строку в параметр как константу. Хотя, если память мне не изменяет, ошибка от такого зависит от настроек компилятора.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
07.09.2015, 19:43
Цитата Сообщение от tnk500 Посмотреть сообщение
А разве это имеет значение?
При вызове CurrentTime("%d/%m/%y_%T"); - имеет, так как "%d/%m/%y_%T" таки const.
0
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
07.09.2015, 19:52
Renji, да, точно. Ошибочка вышла).
0
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 18
07.09.2015, 20:03  [ТС]
Исправил. Спасибо. Заработало.
Получилось:
C
1
2
3
4
5
6
7
8
9
10
char *CurrentTime(const char *TimeFormat)
{
        long int s_time;
        struct tm *m_time;
        char *str_t=new char[128];
        s_time = time(NULL);
        m_time = localtime (&s_time);
        strftime(str_t, 128, TimeFormat, m_time);
        return str_t;
}
Остался только один вопрос. Возможно ли переписать функцию используя меньше средств си, больше средств с++? Может есть какие-нибудь аналоги strftime для работы с переменными формата string?
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
07.09.2015, 20:10
Цитата Сообщение от f3nix Посмотреть сообщение
Остался только один вопрос. Возможно ли переписать функцию используя меньше средств си, больше средств с++? Может есть какие-нибудь аналоги strftime для работы с переменными формата string?
Есть еще std::chrono::system_clock::now. Впрочем, преобразование в текст там все равно через C.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.09.2015, 20:57
Кстати, strftime() в VS работает не совсем так, как положено. Ключ %z выдаёт то же, что и %Z, т. е. получить часовой пояс в числовом виде не получается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.09.2015, 20:57
Помогаю со студенческими работами здесь

Формат даты и времени
Добрый день! Имеется код: const char* TimeInfo() { time_t rawtime; struct tm* timeinfo; time (&rawtime); ...

Формат времени и даты
Как перевести 2016.12.31 15:45 в 2016.12.31 15:45 ? Добавлено через 6 минут Как перевести 2016.12.31 15:45 в 31 December, 15:45 ?

Формат передачи даты и времени!
Вопрос касательно форматов хранения и передачи значений даты-времени. Есть счётчик электрический. Он может передавать информацию о том,...

Подскажите формат даты/времени
Здравствуйте! Подскажите пожалуйста формат даты/времени 29.03.2016 13:32:49 - "f036ad939589d101" 29.03.2016 22:26:35 -...

Формат Даты и Времени (работа с файлом)
Очень прошу помощь. Как считать с файла строку в формате даты и времени? К примеру строку "20.10.2012 14:45:45"


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru