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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.98
SanOs
Сообщений: n/a
#1

Как преобразовать время в строку и обратно - C++

18.10.2007, 14:58. Просмотров 5384. Ответов 3
Метки нет (Все метки)

Помогите с алгоритмом: SYSTEMTIME(или FileTime) в строку с учетом региональных установок, а потом на основе данной строки обратно получить SYSTEMTIME(или FileTime).

Нормальных классов и стандартных функций я не нашел.
Были под 16-разрядные функции: char *ctime( const time_t *timer );char *asctime( const struct tm *timeptr ); без обратного преобразования и с простой интерпретацией (без учета региональных установок) а в 32-разрядных - мелкософту слабо ???
Самое сложное разбор строки обратно в FileTime.
Есть ли идеи, советы, алгоритмы, ссылки и т.д и т.п.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2007, 14:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как преобразовать время в строку и обратно (C++):

Подскажите, как преобразовать строку с IP адресом в число и обратно - C++
Есть IP адрес в std::string "192.168.1.1", нужно преобразовать его в число, а IP адрес числом преобразовать обратно, не используя сторонних...

Преобразовать строку String в массив #define byte_t unsigned char и обратно - C++
Собственно танцы с бубном долгое время. Подскажите пожалуйста, как правильно и оптимально это делать. Каждый символ строки при...

Как преобразовать string в double и обратно? - C++
нашел функцию atof но не хочет запускаться. сам начеркал функцию для перевода в double но обратно чет даже идей нет.

Как правильно преобразовать строку символов в строку типа CComBSTR? - C++
Как правильно преобразовать строку символов (например заданную как char p)в строку типа CComBSTR?

Как перевести строку в hex и обратно? - C++
Немогу найти в гугле функцию какбы перевести строку в hex и обратно, мб у кого завалялась?

Как преобразовать время в long ? - C++
как преобразовать время в long ? есть структура struct tm *newtime; long ltime; time( &ltime ); есть gmtime делающая из...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Excalibur
0 / 0 / 0
Регистрация: 18.10.2007
Сообщений: 4
18.10.2007, 22:20 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/////две структуры SYSTEMTIME
    SYSTEMTIME StrSysT;
    SYSTEMTIME StrSysTF;
////////////////далее нам понадобится клас и обьекты CTime
             CTime timelocal;
             CTime timefile;
/////////////далее если нам нужно будет перевратить обект CTime в стороку нам нужно будет иметь CString
             CString msgTL;
             CString msgTF;
///////например мы хотим посласть в файл или в обычный MessageBox текущее время выполним
             timelocal = CTime::GetCurrentTime();
             msgTL = timelocal.Format("%c");
             MessageBox(msgTL);
///////////если нужно заполнить структуру текущим временем
             timelocal = CTime::GetCurrentTime();
             timelocal.GetAsSystemTime(StrSysT);
/////////////для того что бы потом получить тип int со структуры
             StrSysT.wYear 
             StrSysT.wMonth 
             StrSysT.wDay 
             StrSysT.wHour 
             StrSysT.wMinute /////всё віше перечисленое это типы int
/////////////////допустем теперь мы считали с файла или ещё откуда типы инт относительно времени и теперь на их основе хотим построить обьект CTime
             /////////есть для этого разные конструкторы.. пример. (будем щитать что бы щитали с файла в StrSysTF 
             StrSysTF.wYear = 2007
             StrSysTF.wMonth = 10
             StrSysTF.wDay = 18
             StrSysTF.wHour = 12
             StrSysTF.wMinute = 56
             StrSysTF.wSec = 14
///тогда создадим и заполним обьект класса CTime
          timefile = CTime(StrSysTF);
или например можно так заполнить и создать обьект без структуры
          timefile = CTime(2007,10,18,12,56,14,-1);
 
////вот теперь можно работать с обектом timefile и timelocal например так
           if (timelocal < timefile)
             MessageBox("Меньше");
           else
             MessageBox("Больше");
надеюсь более менее нормально обьяснил .. и надеюсь именно то что тебе нужно.
Гость
Сообщений: n/a
19.10.2007, 15:26 #3
CTime не позволяет получить в строку с учетом региональных установок (к примеру если настраиваеш регион Африка у них "2007/10/19 02:18:29 nm" , а у нас "14:18:29 19.10.2007" показывает одно и то же время), ну и когда пользователь(африканос) введет время(строку) в своем формате то программа должна перевести его снова в SYSTEMTIME
Гость
Сообщений: n/a
19.10.2007, 18:39 #4
тю блин дак зделй разделитель, пусть вводит именно так как нужно тебе ...
ну а если ты уже прямо так хочеш, что бы учитывало стандарт то напиши алгоритм с перебором всех вариантов... если учесть что год это однозначно 4 зачное число (т.к. иначе ты его если и присвоиш структуре systemtime то на его основе не создаш обьекта ctime) скакать скакать будет проще... у америкосов например принято писать сначала месяц потом день и только потом год, ну и соотвественно часы не 24 часовом формате, а в 12 и указывать до или после полудня ... ну вот от этого и пляшы... если встречастья а.m. или p.m. то значит откидываеться расклад с 24 часовым временем. ну и т.д.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2007, 18:39
Привет! Вот еще темы с ответами:

Как преобразовать время из строки в Unix Time? - C++
Получаю &quot;Sat, 18 Jul 2015 19:56:37 +0300&quot; Знаю что можно strptime или бустом, но какой шаблон для такого времени?

Преобразовать utf-8 в cp1251 и обратно - C++
Преобразовать надо без использования сторонних библиотек(windows.h тоже сторонняя библиотека). Читать текст надо из файла записывать тоже.

Преобразовать кодировку utf-8 в cp1251 и обратно - C++
Здорова господа!!! Пишу парсер веб страниц с русским текстом, но тут проблемка страницы записаны в двух кодировках utf8 и cp1251,...

Как преобразовать число в строку - C++
Здравствуйте! У меня такой вопрос: Нужно выводить на экран числа.Функция принимает указатель на строку Font-&gt;DrawTextA(NULL, ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.10.2007, 18:39
Ответ Создать тему
Опции темы

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