- PR -

YYYY月MM月DD日をYYYYMMDDにする方法

投稿者投稿内容
java初心者
ベテラン
会議室デビュー日: 2007/07/23
投稿数: 54
投稿日時: 2007-07-27 11:05
ご質問をさせて下さい。
javaでの開発をしております。

今、画面上で入力された日付の値(YYYY月MM月DD日) を
YYYYMMDDに変える処理を考えているのですが、
どうしても出来ないため、スレッドを立てさせて
頂きました。

上記の問題点として、画面上で入力される日付が
YYYY月までは桁数が一定(YYYY→4桁)なんですが、
MM月とDD日に関しては、一桁の場合と二桁の場合の
二つのケースがあります。

例)2007年10月20日
  2007年5月2日

一桁の場合に頭に0をつけて、
年,月,日を外したYYYYDDMMとしたいのですが、
どうやったら良いのでしょうか?

宜しくお願い致します。
kvip
会議室デビュー日: 2003/05/12
投稿数: 12
投稿日時: 2007-07-27 11:10
いろいろな解決方法があると思います。
java初心者★さんがどのようなアプローチを取ったかを記載された方がよい気がします。
java初心者
ベテラン
会議室デビュー日: 2007/07/23
投稿数: 54
投稿日時: 2007-07-27 11:11
説明が補足致します。

「YYYY年MM月DD日」は一つのデータとして
String型に格納してます。

どうにかして、うまく切り分け結合しYYYYMMDDにしたいです。

宜しくお願い致します。
java初心者
ベテラン
会議室デビュー日: 2007/07/23
投稿数: 54
投稿日時: 2007-07-27 11:15
kvip様

ありがとうございます。
下記まではイメージできるのですが、
そこからがうまくいきませんです。

---------------------------------------------
//日付のデータ
String iYYYYMMDD = "2007年5月2日";

for(int i=0; i<iYYYYMMDD.length(); i++){
char charDate = iYYYYMMDD.charAt(i);
if(?????){
}
}
---------------------------------------------

宜しくお願い致します。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-07-27 11:27
今のものを生かすなら、StringBuilderを使って、もうひとつ文字列を作ると良いですよ。
必要なものだけ連結していけば良いです。


良く読まずに投稿してました。1桁のものが問題ということですね(汗
それならやっぱり、SimpleDateFormatか。

[ メッセージ編集済み 編集者: mio 編集日時 2007-07-27 12:38 ]
Odakaz
ベテラン
会議室デビュー日: 2004/05/24
投稿数: 70
投稿日時: 2007-07-27 11:40
引用:

上記の問題点として、画面上で入力される日付が
YYYY月までは桁数が一定(YYYY→4桁)なんですが、
MM月とDD日に関しては、一桁の場合と二桁の場合の
二つのケースがあります。

例)2007年10月20日
  2007年5月2日
願い致します。



これって、画面上では一つのテキストフィールドで入力されるんでしょうか?
#入力がめんどくさそうな気が・・・

元々分かれているのに、一つのStringに放り込んでしまってから、YYYYMMDD形式にしようというなら、方向性が違うと思います。

元々一つなら仕方ないですが、その場合でもやり方は色々ありますね。
例えば置換しちゃうとか。

追記
私もSimpleDateFormat使うかな

[ メッセージ編集済み 編集者: Odakaz 編集日時 2007-07-27 11:45 ]
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-07-27 11:41
引用:

java初心者★さんの書き込み (2007-07-27 11:05) より:
一桁の場合に頭に0をつけて、
年,月,日を外したYYYYDDMMとしたいのですが、



その通りにアルゴリズムを書けばよいのでは?
まずYYYYとDDとMMは切り出せるのですよね?
String.indexOf()などで"月"とかの位置を算出して切り出す。ここはOK?

で、Integer.parseInt()でintに直す。ここもOK?

あとは
コード:
int yyyy;
int mm;
int dd;

StringBuilder b = new StringBuilder();
b.append(yyyy);
if (mm < 10) {
  b.append(0);
}
b.append(mm);
if (dd < 10) {
  b.append(0);
}
b.append(dd);


言ったとおりにコード化すれば出来るでしょう?

# ちなみに私ならjava.text.SimpleDateFormat#parse()を使う
さる
ぬし
会議室デビュー日: 2005/07/14
投稿数: 276
お住まい・勤務地: 実家戻ったw
投稿日時: 2007-07-27 11:44
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html

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