Привет всем. Ну почему так сложно сделать вроде бы простую вещь
В примере в MSDN с английской локалью вроде всё гуд. Но вот для русской точки в дате уже не проходят
Если их заменить слешами — то всё ок, порядок дата-месяц учитывается как надо. В панели управления в языках и стандартах краткий формат данных задан как dd.MM.yyyy
Как этот пример заставить работать правильно и с датами формата dd.MM.yyyy ?
locale loc("Russian_Russia");
basic_stringstream< char > pszGetF, pszPutF, pszGetI, pszPutI;
ios_base::iostate st = 0;
struct tm t;
memset(&t, 0, sizeof(struct tm));
pszGetF << "22.06.2008";
pszGetF.imbue( loc );
basic_istream<char>::_Iter i = use_facet <time_get<char> >(loc).get_date(basic_istream<char>::_Iter(pszGetF.rdbuf() ), basic_istream<char>::_Iter(0), pszGetF, st, &t);
if ( st & ios_base::failbit )
cout << "time_get("<< pszGetF.rdbuf( )->str( )<< ") FAILED on char: " << *i << endl;
else
cout << "time_get("<< pszGetF.rdbuf( )->str( )<< ") ="
<< "\ntm_sec: " << t.tm_sec
<< "\ntm_min: " << t.tm_min
<< "\ntm_hour: " << t.tm_hour
<< "\ntm_mday: " << t.tm_mday
<< "\ntm_mon: " << t.tm_mon
<< "\ntm_year: " << t.tm_year
<< "\ntm_wday: " << t.tm_wday
<< "\ntm_yday: " << t.tm_yday
<< "\ntm_isdst: " << t.tm_isdst
<< endl;