Привет всем. Ну почему так сложно сделать вроде бы простую вещь
В примере в 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;
похоже спасение только в VarDateFromStr (а хотелось cтандартными средствами)
Здравствуйте, chipmunk, Вы писали:
C>Привет всем. Ну почему так сложно сделать вроде бы простую вещь
C>В примере в MSDN с английской локалью вроде всё гуд. Но вот для русской точки в дате уже не проходят
C>Если их заменить слешами — то всё ок, порядок дата-месяц учитывается как надо. В панели управления в языках и стандартах краткий формат данных задан как dd.MM.yyyy
C>Как этот пример заставить работать правильно и с датами формата dd.MM.yyyy ?
C>C> locale loc("Russian_Russia");
C> basic_stringstream< char > pszGetF, pszPutF, pszGetI, pszPutI;
C> ios_base::iostate st = 0;
C> struct tm t;
C> memset(&t, 0, sizeof(struct tm));
C> pszGetF << "22.06.2008";
C> pszGetF.imbue( loc );
C> 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);
C> if ( st & ios_base::failbit )
C> cout << "time_get("<< pszGetF.rdbuf( )->str( )<< ") FAILED on char: " << *i << endl;
C> else
C> cout << "time_get("<< pszGetF.rdbuf( )->str( )<< ") ="
C> << "\ntm_sec: " << t.tm_sec
C> << "\ntm_min: " << t.tm_min
C> << "\ntm_hour: " << t.tm_hour
C> << "\ntm_mday: " << t.tm_mday
C> << "\ntm_mon: " << t.tm_mon
C> << "\ntm_year: " << t.tm_year
C> << "\ntm_wday: " << t.tm_wday
C> << "\ntm_yday: " << t.tm_yday
C> << "\ntm_isdst: " << t.tm_isdst
C> << endl;
C>
Boost Date Time не поможет?
http://www.boost.org/doc/libs/1_35_0/doc/html/date_time.html