文字列"yy/mm/dd"をCTimeに格納したいのですが・・・

解決


どら  2004-09-30 01:58:42  No: 54589

今、複数のcsv形式のファイルをmdbのファイルにマージするプログラムを作っています(読み込み履歴&二重読み込み防止機能付)。
その中で、日付の部分の変換に苦戦しています。
CSV形式では
    2004/09/12
のように保存されているのですが、これをCTimeの形式で格納させたいのですが・・・
   ①文字列で
         2004
         09
         12
     を認識させる。
   ②それぞれをint型に変換
   ③CTime.***(必要な項目)に格納
という方法になるのでしょうか?
    文字列"yy/mm/dd" → CTime
と、一発で変換してくれるような関数や、上記以外のよりよい解決法がありましたらご教授いただけないでしょうか?

宜しくお願いします。


RAPT  2004-09-30 08:48:28  No: 54590

CTimeのコンストラクタとsscanf()でできるのでは?
CTime( int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec, int nDST = -1 );

int year, month, day;
sscanf("2004/09/12", " %d/%d/%d", &year, &month, &day);
CTime c_time(year, month, day, 0, 0, 0);


どら  2004-09-30 18:48:54  No: 54591

その方法もあるのですが・・・実は、すでに宣言されているCTimeオブジェクトに、yy/mm/ddを渡したいんです。
RAPTさんの方法だと、宣言するときに値をいれないとだめですよね?

そうすると・・・

CTime *c_time;          //すでに宣言されているもの

int year, month, day;
sscanf("2004/09/12", " %d/%d/%d", &year, &month, &day);
CTime temp_c_time(year, month, day, 0, 0, 0);

c_time = &temp_c_time;

のように、ポインタで渡す方法しかないんでしょうか・・・?

どうも知識が中途半端で・・・的外れなこといっていたらごめんなさい。
宜しくお願いします。


YuO  2004-09-30 19:07:03  No: 54592

何も考えずに,
CTime c_time;

c_time = CTime(year, month, day, 0, 0, 0);
で良いと思いますが。


どら  2004-09-30 20:13:04  No: 54593

ありがとうございます。
解決できました。
後はAccessのMDBへの書き込みの部分で奮闘すれば・・・(^^;

RAPTさん、YuOさん、ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加