- PR -

C++での日付の扱い

投稿者投稿内容
生茶パンダ
会議室デビュー日: 2007/08/14
投稿数: 4
投稿日時: 2007-09-06 00:22
C++のコンソールアプリケーションでDBの更新を行う
バッチプログラムを作成しているのですが、

ある関数の引数にchar*型で日付を渡しているのですが、その引数に
"YYYY/MM/DD"形式で渡される場合と、"YYYYMMDD"形式で渡される場合が
ある為、その関数内で"YYYY/MM/DD"形式に変換し直そうと思っているのですが、
C++には、VBのように標準では日付型の変数がなく単純な型変換で解決できそうに
ないので、困っています。

もしかすると簡単な事なのかもしれませんが、解決法を教えて頂けないでしょうか?
よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-09-06 07:24
文字列にスラッシュが含まれるか、確認する

含まれなければ 4 2 2 で区切って文字列を取り出し、
スラッシュをはさんで整形する



6 4 にスラッシュを挿入、でもできる(幅注意)
D.Matsu
ベテラン
会議室デビュー日: 2006/12/07
投稿数: 51
投稿日時: 2007-09-06 09:12
C++的ではありませんが、sscanfで"%4d%2d%2d"で拾ってみて戻り値3(全部ヒット)なら"YYYY/MM/DD"形式にsprintfで直す、とかどうでしょう。
#異常文字列のことは考慮の外ですが


[ メッセージ編集済み 編集者: D.Matsu 編集日時 2007-09-06 09:14 ]
うちうせん
ベテラン
会議室デビュー日: 2003/08/08
投稿数: 96
お住まい・勤務地: 福岡県
投稿日時: 2007-09-06 11:23
月と日が必ず0サプレス(1月が01など)でくるならば単純に文字数で判断していいのではないでしょうか?
そうでなければJittaさんが言われてる通り/を検索が楽ですね。
整形に関しては他の方が書かれてるので省略します。
_________________
by うちうせん
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-09-06 12:00
引用:

うちうせんさんの書き込み (2007-09-06 11:23) より:
月と日が必ず0サプレス(1月が01など)でくるならば単純に文字数で判断していいのではないでしょうか?
そうでなければJittaさんが言われてる通り/を検索が楽ですね。
整形に関しては他の方が書かれてるので省略します。



サプレス(抑制)しないでね。111 だと、11月1日なのか、1月11日なのか、わからないから。
TAD
ベテラン
会議室デビュー日: 2007/03/20
投稿数: 52
お住まい・勤務地: 海のそば
投稿日時: 2007-09-06 16:52
引用:
C++には、VBのように標準では日付型の変数がなく単純な型変換で解決できそうに
ないので、困っています。

もしかすると簡単な事なのかもしれませんが、解決法を教えて頂けないでしょうか?



簡単な事というか、これがわからないということは他の部分でも相当苦労しているのではないかと
想像するのですが...(よくC/C++で話題になる"ポインタ/配列/文字列の理解"とか大丈夫?)

これからも似たような仕事をしなければならないのならば、"Visual"でない(Win32APIだの
MFCだの.NETだのの使い方じゃなくてもっとプリミティブな処理についての)C/C++等言語の
例題付きの本を一冊こなしておくぐらいしたほうがいいのではないでしょうか。
#K&RやStroustrupとはいわないけど、「独習C++」とかあんな程度の。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-09-06 17:17
引用:

Jittaさんの書き込み (2007-09-06 12:00) より:
サプレス(抑制)しないでね。111 だと、11月1日なのか、1月11日なのか、わからないから。


以前、上の人に説明するのに困ったことを思い出しました…。

そういえば、皆さんはこの場合なんと言ってるんでしょうか。
私は「ゼロフィル」「ゼロ埋め」でしたが、ぐぐってもそれが一般的とは、断じることができないので。
「正規化」だとちょっと広すぎるし。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-09-06 18:06
引用:

mioさんの書き込み (2007-09-06 17:17) より:
引用:

Jittaさんの書き込み (2007-09-06 12:00) より:
サプレス(抑制)しないでね。111 だと、11月1日なのか、1月11日なのか、わからないから。


以前、上の人に説明するのに困ったことを思い出しました…。

そういえば、皆さんはこの場合なんと言ってるんでしょうか。
私は「ゼロフィル」「ゼロ埋め」でしたが、ぐぐってもそれが一般的とは、断じることができないので。
「正規化」だとちょっと広すぎるし。


ってスレがカフェになかったっけ?

ゼロ パディング(埋め)だったかと

スキルアップ/キャリアアップ(JOB@IT)