日付データをCOleDateTimeに変換する
4月 16th, 2008 Posted in C++iTunesのライブラリファイル(iTunes Music Library.xml)を解析してゴニョゴニョしたいなぁと思って、VC6で解析ツールを作っています。
その中で、[2008-04-14T08:49:55Z]というgmtの書式で表される日時同士を比較したいがために、COleDateTimeに変換する関数を作りました。
値のチェックとかは省略してますよ。
言語はC++です。
- BOOL ConvStrToDate( LPTSTR pstrDate, COleDateTime& dateTime )
- {
- if( !pstrDate ){
- return FALSE;
- }
- char sep[] = "-:TZ";
- char* token = NULL;
- std::vector<std::string> vDateString;
- token = strtok( pstrDate, sep );
- vDateString.push_back( token );
- while( token ){
- token = strtok( NULL, sep );
- if( token ){
- vDateString.push_back( token );
- }
- }
- if( !vDateString.size() ){
- return FALSE;
- }
- char *stopstring;
- const int year = (int)strtol( vDateString[ 0 ].c_str(), &stopstring, 10 );
- const int month = (int)strtol( vDateString[ 1 ].c_str(), &stopstring, 10 );
- const int day = (int)strtol( vDateString[ 2 ].c_str(), &stopstring, 10 );
- const int hour = (int)strtol( vDateString[ 3 ].c_str(), &stopstring, 10 );
- const int min = (int)strtol( vDateString[ 4 ].c_str(), &stopstring, 10 );
- const int sec = (int)strtol( vDateString[ 5 ].c_str(), &stopstring, 10 );
- dateTime.SetDateTime( year, month, day, hour, min, sec );
- return TRUE;
- }
なんかまずいところがあればご指摘お願いシマス!
こちらもオススメ!