こんにちは。
下記のようなフォーマットで日付型のチェックをしたいと
思っています。最低限(1)YYYYが入力されていればOKで、
最高だと(8)YYYY-MM-DDThh:mm:ss.sTZDまで入力可能です。
この日付が妥当であれるかどうかの判定はどのように
するのが良いでしょうか?
YYYY[-MM[-DD[Thh[:mm[:ss[.s[TZD]]]]]]]
(1)YYYY
(2)YYYY-MM
(3)YYYY-MM-DD
(4)YYYY-MM-DDThh
(5)YYYY-MM-DDThh:mm
(6)YYYY-MM-DDThh:mm:ss
(7)YYYY-MM-DDThh:mm:ss.s
(8)YYYY-MM-DDThh:mm:ss.sTZD
ちょっと考えたのは、まず、長さを見て各文字列を
パースして各場所の数値の妥当性をチェックって
言うものです。これでも出来そうな気もしますが、
他にも良いやり方などありましたら、
ご教示宜しくお願い致します。
No.3
- 回答日時:
すみません。
修正です。//全ての入力をいったんロングに変えてしまいます。
//その後、何らかの方法でその文字列を解析します。
StringBuffer sb = new StringBuffer("2004-08-16");
String data = "2000-01-01 00:00:00.0 TZD";
char[] data_char = data.toCharArray();
sb.getChars(0,sb.length(),data_char,0);
//ここまでで、入力された値を反映したロングフォーマット文字が完成します。
No.2
- 回答日時:
こんな風にすれば意外とスリムになるんじゃないでしょうか?
ちなみに、このサンプルは動作しません。適当に修正してください。
//全ての入力をいったんロングに変えてしまいます。
//その後、何らかの方法でその文字列を解析します。
String data = "2000-01-01 00:00:00.0 TZD";
char[] data_char = data.toCharArray();
sb.getChars(0,sb.length(),data_char,0);
//ここまでで、入力された値を反映したロングフォーマット文字が完成します。
//以降解析処理。ここの解析処理はご自分で・・・
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.JAPAN);
Date myDate = df.parse(new String(data_char));
//例外がでればそれは、不正な値である。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 09:24
- Access(アクセス) Accessのデータ型の日付/時刻型について 1 2023/04/02 17:03
- Access(アクセス) エクセルのVBAについて教えてください。 4 2023/01/21 10:21
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/01/23 17:13
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Excel(エクセル) Excel 数行を1組とする300組ほどあるデータの項目を揃えたいです。 3 2023/01/26 19:38
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- MySQL SQLについて質問です。 SELECT TO_CHAR(TO_DATE('90-10-08.'YY- 4 2022/05/13 20:55
- Access(アクセス) アクセスで教えてください。 クエリで2日前を抽出する計算式を 入力して表示させると ちゃんとyyyy 1 2023/06/08 21:05
- Visual Basic(VBA) vb.net どうしてイコールにならないのでしょうか 4 2022/09/29 12:21
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPでHashMap・配列の変数の値...
-
ダブルクォーテーションを含む...
-
ArrayListの要素数の上限
-
C言語の変数(LSB)の合わせ込...
-
Javaの問題なのですが、「3文字...
-
String型の値が大文字か小文字...
-
wsprintf関数の使い方について
-
日付や時刻の"01"を" 1"に変換...
-
char型での演算子
-
ResultSetの内部構造(Java)
-
String str = "a\\\\b\\\\c";
-
UINT64→UINT32[2]にする方法
-
matchesを否定文として使う方法...
-
バイト配列からfloat型の数値を...
-
BCD形式で時刻を!
-
javaというか文字列について少...
-
excel vba 時間計算と条件分岐...
-
getParameterの値変更
-
(Javaで)第1コマンドライン...
-
数値の出力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
ArrayListの要素数の上限
-
DateTimePickerに値を入れたい...
-
wsprintf関数の使い方について
-
Stringクラスの変数の格納アド...
-
BCD形式で時刻を!
-
javaのCSVデータ読込についてです
-
このプログラミング誰か教えて...
-
Evaluate()に文字列の形式の数...
-
このプログラミング誰か教えて...
-
JSPでHashMap・配列の変数の値...
-
特定の文字列を複数抜き出した...
-
matchesを否定文として使う方法...
-
DOSバッチで変数の値を変数名に...
-
Javaの問題なのですが、「3文字...
-
excel vba 時間計算と条件分岐...
-
実行シェルからCOBOLへパラメー...
-
日付や時刻の"01"を" 1"に変換...
-
VB6,論理演算子Orの使い方がわ...
-
char型での演算子
おすすめ情報