Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
nonamez123
187 / 183 / 54
Регистрация: 23.10.2010
Сообщений: 1,331
1

Помогите с временем

11.12.2011, 23:46. Просмотров 412. Ответов 8
Метки нет (Все метки)

Использую функцию 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");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2011, 23:46
Ответы с готовыми решениями:

Операции со временем
Здравствуйте. Прошу помочь в решении задачи: Время задается в формате...

Управление временем
Как управлять временем? Например хочу написать программу, которая каждые 5...

Работа с временем
Как подсчитать сумму времени? тоесть что бы не считало просто числа,а именно...

Работа с временем
Доброе время суток! Допустим у я хочу ввести время начала, и время конца...

Операции со временем
Здравствуйте, хотел бы узнать на счет времени и операций с ними. Есть задание,...

8
villu
203 / 204 / 16
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
11.12.2011, 23:50 2
1: ты возвращаешь указатель на char как инт
2: ты возвращаешь указатель на локальные данные, которые по выходу из функции уже невалидны
0
nonamez123
187 / 183 / 54
Регистрация: 23.10.2010
Сообщений: 1,331
11.12.2011, 23:51  [ТС] 3
это же мне уже говорил кмапилятор(за исклчением второго, но я догадываюсь об этом уже), мне же это нужно как-то решит
0
villu
203 / 204 / 16
Регистрация: 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);
}
Как вариант, если на с++ нужна.
Если нужна Си функция, то можно передать указатель валиднго буфера как параметр
1
nonamez123
187 / 183 / 54
Регистрация: 23.10.2010
Сообщений: 1,331
12.12.2011, 00:03  [ТС] 5
А возможно сделать что бы оно возвращало или int или string в зависимости от потребностей ?
0
villu
203 / 204 / 16
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
12.12.2011, 00:06 6
а например? не совсем понимаю как это может пригодится.
можно, например шаблон.
0
nonamez123
187 / 183 / 54
Регистрация: 23.10.2010
Сообщений: 1,331
12.12.2011, 00:19  [ТС] 7
Та я это так ради интереса узнал. Мне то нужны только числа, но он может например название дня возвратить.

Ну и ещё тако вопрос, вот при вызове функции с параметром %m он возвращает номер месяца. Сейчас к примеру 12, но вот например если август, возвращает 08. Если я сделаю %10, оно даст 8 или будит ошибка? В переменную 08 как-то не удалось забить...
0
villu
203 / 204 / 16
Регистрация: 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"
0
nonamez123
187 / 183 / 54
Регистрация: 23.10.2010
Сообщений: 1,331
12.12.2011, 00:30  [ТС] 9
не понял... Если возможно, поподробнее
0
12.12.2011, 00:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2011, 00:30

Работа с временем
Здравствуйте! Помогите пожалуйста с идеями. Надо написать программку которая...

Работа со временем
Добрый день. Есть два промежутка времени. Начальное и конечное. С помощью...

Работа со временем
Мне нужно заходить в if через каждые 10 миллисекунд я пытался через...


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

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

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