• 締切済み

日付の入力チェック

お疲れ様です。 c++の日付の入力型のチェックを行いたいです。 具体的には文字が入力されて その型が(yyyy/mm/dd)の型で存在するかをチェックします。 数字だけの入力なら標準クラスにありそうなのですが「/」を含みチェックは行えないのでしょうか? また標準クラスにあるのならば「try~catch」を使用してエラーを受け取れる方法があったら教えてください。 お願いします。

みんなの回答

  • abayama
  • ベストアンサー率48% (38/79)
回答No.2

strptimeでできます。チェックは戻り値を見ればできます。 ただしWindowsでは使えません。

参考URL:
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strptime.3.html
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

ぱっと思い付くのは「sscanf で切り分けてから細かく調べる」かなぁ. こんな感じ: if (sscanf(date, "%4d/%2d/%2d", &y, &m, &d) != 3) { 正しくない } else { y, m, d が正しいかどうかをチェックする }

関連するQ&A

  • 日付型の入力値チェック

    こんにちは。 下記のようなフォーマットで日付型のチェックをしたいと 思っています。最低限(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 ちょっと考えたのは、まず、長さを見て各文字列を パースして各場所の数値の妥当性をチェックって 言うものです。これでも出来そうな気もしますが、 他にも良いやり方などありましたら、 ご教示宜しくお願い致します。

    • ベストアンサー
    • Java
  • 日付入力

    テキストボックスにYYYY/MM/DDの形式で入力します。 入力中に、YYYYが入力されたら自動的にスラッシュを付け加えて、またMMと入力したらスラッシュが自動的に入るようにしたいです。その過程で、日付のチェックも同時に行ないたいです。 どう書けばよいのでしょうか。ぜひ教えてください。お願いします。

  • EXCEL 日付の入力形式

    こんにちは。 日付が、dd/mm/yyyyの形式で入力されたデータをもらいました。 関数を利用したいのでEXCELに日付として認識させたいのですが、 セルの書式設定で設定してもだめなようです。 質問 1)yyyy/mm/ddの形式で入力されていないと日付として認識されないのでしょうか? 2)現在の形式のまま、日付として認識させる方法はありますか? 3)dd/mm/yyyyをyyyy/mm/ddに変換する方法はありますか? 以上、よろしくお願いします。

  • シェルスクリプト:入力した日付のチェック

    BourneShell勉強中の初心者のものです。 ユーザーが(yyyy-mm-dd)の形式で入力した日付に対して、日付が指定されたフォーマットにあいかつ範囲以内であることチェックして、次のステップに進みます。 1月から12月まで毎月31日まであるものとみなし、1000年から9999年までが範囲内です。 以下のようなスクリプトを書いたのですが、もう少し短くすっきりとできないでしょうか?何か他に方法があればご教授お願いします。 echo "日付を入力してください(yyyy-mm-dd):\c" read hiduke case $hiduke in [1-9][[0-9][0-9][0-9]-0[1-9]-0[1-9]) break ;; [1-9][[0-9][0-9][0-9]-1[0-2]-0[1-9]) break ;; [1-9][[0-9][0-9][0-9]-0[1-9]-[1-2][0-9]) break ;; [1-9][[0-9][0-9][0-9]-1[0-2]-[1-2][0-9]) break ;; [1-9][[0-9][0-9][0-9]-0[1-9]-3[01]) break ;; [1-9][[0-9][0-9][0-9]-1[0-2]-3[31]) break ;; "") echo "入力されていません" ;; *) echo "指定外です" ;; esac

  • 入力された日付の正規表現の仕方を教えて下さい。

    こんばんは、いつもお世話になっております。 過去ログをあさってみたのですが、探し方が悪いのか 見つけられず…。 どうかご指導よろしくお願い申し上げます。 フォームに入力された値のチェックを、CGIに渡す前に ジャバスクリプトでもチェックしたいと思っています。 未入力や半角英数字以外のエラーチェックは出来たのですが yyyy/mm/dd形式で日付の入力をして欲しい時の チェックの書き方がわかりません。 私なりに色々と調べてみて、 if(myForm.day.value.match(/^[0-9]{4}\/[0-9]{2}\/[0-9]{2}$/)){ alert("日付は半角でyyyy/mm/dd形式でご記入下さい"); return false; } と記述してみたのですが、9999/99/99のような、ありえない 日付でも通ってしまいます。 そればらば、とおもい if(myForm.day.value.match(/^[2-3][0-9][0-9][0-9]\/[0-1][0-9]\/[0-3][0-9]$/)){ alert("日付は半角でyyyy/mm/dd形式でご記入下さい"); return false; } と書いてみたのですが、こちらはエラーが出ました(泣) どうか、ご指導よろしくお願い申し上げます。

  • 最新の日付を取得する方法。

    Excel2000にて 「YYYY/MM/DD HH:MM」で日付が入力されている列があります。 セルの型は標準です。 この列から1番最新のものを取得したいのですが MAXやMAXAを使っても上手く行きません…。 どなたかお知恵をお貸し下さいませm(__)m

  • Excel97の日付の書式設定

    現在Excel97で日付入力をしたいのですが、 最終的に演算に使用する日付で yyyy/mm/ddとyyyy/mmどちらでも入力できる書式設定を探しています。 yyyy/mm/ddの指定にするとyyyy/mmと入力してもyyyy/mm/01となってしまいます。 yyyy/mmのセルとdd専用のセルを別に作ると、ddを入力した時に 閏年のエラーチェックなどがかけられないので演算部分(1年後該当日前日の指定等)がうまく働きません。 いい方法がありましたら教えてください。

  • 変数に昨日の日付を入力したい

    XP Excel2003を使っています day_z = Format(Now, "yyyy/mm/dd")で当日の日付を入力していますが、これを昨日の日付で入力したいのですがよろしくお願いします。

  • シェルの引数の入力チェックをしたい・・

    シェルは初心者のため、ご教授ください。 3つの引数を受け取り、値のチェックを行いたいのですが書き方がよくわかりません・・。 やりたいチェックは、 第1引数は 数字じゃなければエラー 第2引数は 文字列が "YES" か "NO"でなければエラー 第3引数は 日付のフォーマットチェック(YYYY/MM/DD以外はエラー) です。よろしくお願いします。

  • エクセルで日付、時間表示

    お世話になります。エクセル2000を使っています。 セルの書式設定-ユーザー定義で以下の条件で表示させたいのですが・・・・ 日付データとして、日付のみのものと、時間も入っているデータを、 日付のみのものは日付のみの表示に、 時間も入っているものは日付と時間を表示する。 具体的には、ある一つのセルに 2003/07/26と入力した時 → "2003/07/26"と表示 2003/07/26 18:30と入力した時 →  "2003/07/26 18:30"と表示 ユーザー定義で、 yyyy/mm/dd yyyy/mm/dd hh:mm でそれぞれの表示はできますが、例えば 時間データのないものに、yyyy/mm/dd hh:mmと定義すると、"2003/07/26 00:00"と表示されて都合がよくありません。 文字データとして、前に「’」を付ければ表示のみはできますが、数値データとして使えません。 少し長くなりましたが、よろしくご教示ください。

専門家に質問してみよう