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

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

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

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


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

На крайняк, взять исходники MFC и оттуда выдернуть функцию парера.
Я так делал. Было счастье.
...
Рейтинг: 0 / 0
13.08.2004, 13:20
    #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
13.08.2004, 13:51
    #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
Форумы / C++ [игнор отключен] [закрыт для гостей] / Парсинг строчки с датой / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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