powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Парсинг строчки с датой
4 сообщений из 4, страница 1 из 1
Парсинг строчки с датой
    #32648238
ALocky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет! Может знает кто, как можно строчку вида
"Wed, 11 Aug 2004 04:30:02 +0400" (взято из почтового заголовка),
преобразовать в TDateTime? Или вытащить год, месяц, день и время (можно без учета +0400)?
...
Рейтинг: 0 / 0
Парсинг строчки с датой
    #32648646
Siebentearbeit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, я думаю, строчку

Wed, 11 Aug 2004 04:30:02 +0400

легко разбить на

Wed
11 Aug 2004
(есть 2 пробела)
04:30:02
+0400


а дальше взять вторую и третью части и пропарсить.

На крайняк, взять исходники MFC и оттуда выдернуть функцию парера.
Я так делал. Было счастье.
...
Рейтинг: 0 / 0
Парсинг строчки с датой
    #32648651
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
bool ReadGmtDate(const char* pszText, TDateTime& DateTime)
{
	int iFields;
	int iDay, iYear, iHours, iMinutes, iSeconds;
	char szWeekday[GMT_DATE_BUFF_LENGTH];
	char szMonth[GMT_DATE_BUFF_LENGTH];

	const char szPattern[] = "%s %d %s %d %d:%d:%d";

	iFields = sscanf(pszText, szPattern, szWeekday, &iDay, szMonth, &iYear, &iHours, &iMinutes, &iSeconds);
	if (iFields !=  7 )
		return false;

    DateTime = TDateTime(iYear, GetMonth(szMonth), iDay) + TDateTime(iHours, iMinutes, iSeconds,  0 );

            return true;
}

int GetMonth(const char* pszMonth)
{
	int i;
	const char* aMonth[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };

	for (i =  0 ; i <  12 ; i++)
		if (!strcmpi(pszMonth, aMonth[i]))
			return i;

	return  0 ;
}
...
Рейтинг: 0 / 0
Парсинг строчки с датой
    #32648731
ALocky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roman10
Код: plaintext
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.
bool ReadGmtDate(const char* pszText, TDateTime& DateTime)
{
	int iFields;
	int iDay, iYear, iHours, iMinutes, iSeconds;
	char szWeekday[GMT_DATE_BUFF_LENGTH];
	char szMonth[GMT_DATE_BUFF_LENGTH];

	const char szPattern[] = "%s %d %s %d %d:%d:%d";

	iFields = sscanf(pszText, szPattern, szWeekday, &iDay, szMonth, &iYear, &iHours, &iMinutes, &iSeconds);
	if (iFields !=  7 )
		return false;

    DateTime = TDateTime(iYear, GetMonth(szMonth), iDay) + TDateTime(iHours, iMinutes, iSeconds,  0 );

            return true;
}

int GetMonth(const char* pszMonth)
{
	int i;
	const char* aMonth[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };

	for (i =  0 ; i <  12 ; i++)
		if (!strcmpi(pszMonth, aMonth[i]))
			return i;

	return  0 ;
}


Супер! То что надо... спасибо огромное
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Парсинг строчки с датой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]