Форум программистов, компьютерный форум CyberForum.ru

Помогите с временем - C++

Восстановить пароль Регистрация
 
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
11.12.2011, 23:46     Помогите с временем #1
Использую функцию strftime/ для получения частей времени. Пытаюсь сделать это отдельной функцией и вывести, но почему-то не получается... Хотя в нутри функции если делать вывод, то почти всё ок, за исключение нуля на конце.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <time.h>
 
using namespace std;
 
int vremia(char *format ){
    char buffer[80];
    time_t seconds = time(NULL);
    tm* timeinfo = localtime(&seconds);
    strftime(buffer, 80, format, timeinfo);
 
    return buffer;
}
 
int main(){
    
    cout << vremia("%Y");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2011, 23:46     Помогите с временем
Посмотрите здесь:

C++ Ограниченый временем ввод
C++ Операции со временем
Работа с временем C++
Работа с временем C++
C++ Работа с временем
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
11.12.2011, 23:50     Помогите с временем #2
1: ты возвращаешь указатель на char как инт
2: ты возвращаешь указатель на локальные данные, которые по выходу из функции уже невалидны
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
11.12.2011, 23:51  [ТС]     Помогите с временем #3
это же мне уже говорил кмапилятор(за исклчением второго, но я догадываюсь об этом уже), мне же это нужно как-то решит
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
11.12.2011, 23:53     Помогите с временем #4
C++
1
2
3
4
5
6
7
8
std::string vremia(char *format ){
        char buffer[80];
        time_t seconds = time(NULL);
        tm* timeinfo = localtime(&seconds);
        strftime(buffer, 80, format, timeinfo);
        // не забудь проверки результатов функций
        return std::string(buffer);
}
Как вариант, если на с++ нужна.
Если нужна Си функция, то можно передать указатель валиднго буфера как параметр
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
12.12.2011, 00:03  [ТС]     Помогите с временем #5
А возможно сделать что бы оно возвращало или int или string в зависимости от потребностей ?
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
12.12.2011, 00:06     Помогите с временем #6
а например? не совсем понимаю как это может пригодится.
можно, например шаблон.
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
12.12.2011, 00:19  [ТС]     Помогите с временем #7
Та я это так ради интереса узнал. Мне то нужны только числа, но он может например название дня возвратить.

Ну и ещё тако вопрос, вот при вызове функции с параметром %m он возвращает номер месяца. Сейчас к примеру 12, но вот например если август, возвращает 08. Если я сделаю %10, оно даст 8 или будит ошибка? В переменную 08 как-то не удалось забить...
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
12.12.2011, 00:26     Помогите с временем #8
да можно накрутить, но, думаю, смысла немного от такого.
Можно сделать проще.
Объявить енум (год, месяц, день ... ) и по значениям выводить значение полей timeinfo.

C
1
2
3
4
5
6
7
8
9
10
11
           struct tm {
               int tm_sec;         /* seconds */
               int tm_min;         /* minutes */
               int tm_hour;        /* hours */
               int tm_mday;        /* day of the month */
               int tm_mon;         /* month */
               int tm_year;        /* year */
               int tm_wday;        /* day of the week */
               int tm_yday;        /* day in the year */
               int tm_isdst;       /* daylight saving time */
           };
А если оставить строку с форматированием, то не совсем ясно что из этого формата брать за int, если там, например, 2 значения "%Y %m"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2011, 00:30     Помогите с временем
Еще ссылки по теме:

Управление временем C++
работа со временем C++
Работа со временем C++

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

Или воспользуйтесь поиском по форуму:
nonamez123
 Аватар для nonamez123
184 / 180 / 12
Регистрация: 23.10.2010
Сообщений: 1,301
12.12.2011, 00:30  [ТС]     Помогите с временем #9
не понял... Если возможно, поподробнее
Yandex
Объявления
12.12.2011, 00:30     Помогите с временем
Ответ Создать тему
Опции темы

Текущее время: 09:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru