Java 時刻型(時間)かどうかをチェックする方法 ホームページ制作 | 墨田区

Java 時刻型(時間)かどうかをチェックする方法

LINEで送る
Pocket

Javaで時刻型(HH:mm)かどうかをチェック方法をご紹介します。

実務では時間管理は重要です。正確な時間のチェックが求められます。ところが、時刻は12時間表示だったり、24時間表示だったりする場合もあり、チェック方法が悩ましいところです。業界によっては25時とか26時などで扱われることもありますからね。

一般的には、タイムカード的な発想で 時:分(hh24:mm) で時間入力されることが多いのではないでしょうか?

ここでは Javaで時:分(hh24:mm) 型であるかどうかの方法 をご紹介します。




【PR】マジか?!「アレ」してるLINEスタンプっていったい・・・


時刻型チェック方法

時刻のチェックには Pattern クラスと Matcher クラスを利用します。
まずはサンプルソース見てみましょう。

/**
 * 指定された文字列が時刻型かどうかを返します。
 *
 * @param value 文字列
 * @return true:正常, false:異常
 */
public static boolean isTimeType(String value) {
  if ( value == null || "".equals(value) )
    return false;
  Pattern p = Pattern.compile("^([0-1][0-9]|[2][0-3]):[0-5][0-9]$");
  Matcher m = p.matcher(value);
  if ( !m.find() )
    return false;
  return true;
}

対象文字列が null の場合、Matcher クラスで NullPointerException が発生します。そのため、対象文字列が null もしくは 空文字列の場合は return false としています。

Pattern p = Pattern.compile("^([0-1][0-9]|[2][0-3]):[0-5][0-9]$");

Pattern クラスに設定する正規表現は「^([0-1][0-9]|[2][0-3]):[0-5][0-9]$」としています。これにより 00:00~23:59 までの範囲をカバーできます。

テストソースを用意しました。

System.out.println("null    " + DateUtils.isTimeType(null));
System.out.println("空文字  " + DateUtils.isTimeType(""));
System.out.println("XYZ     " + DateUtils.isTimeType("XYZ"));
System.out.println("1234    " + DateUtils.isTimeType("1234"));
System.out.println("1:23    " + DateUtils.isTimeType("1:23"));
System.out.println("12:34   " + DateUtils.isTimeType("12:34"));
System.out.println("99:99   " + DateUtils.isTimeType("99:99"));
System.out.println("24:00   " + DateUtils.isTimeType("24:00"));
System.out.println("00:00   " + DateUtils.isTimeType("00:00"));
System.out.println("23:59   " + DateUtils.isTimeType("23:59"));

※isTimeType メソッドは DateUtils クラスに記述しています。

結果はこんな感じになります。

null    false
空文字  false
XYZ     false
1234    false
1:23    false
12:34   true
99:99   false
24:00   false
00:00   true
23:59   true

おや?「1:23」は時刻型ではないという判定が出ていますね。このメソッドでは「01:23」でないと時刻型として認められていません。もし「1:23」も時刻型としたい場合は、ちょっと工夫が必要です。まず、以下のようなメソッドを用意します。

/**
 * 指定された文字列の最後から指定された文字列長の文字列を返します。
 *
 * @param value 基となる文字列
 * @param length 返す文字列の文字列長
 * @return 基となる文字列の最後から指定された文字列長の文字列
 */
public static String rightstring(String value, int length) {
  try {
    if ( value.length() >= length )
      return value.substring(value.length() - length);
    else
      return value.substring(1);
  } catch ( Exception e ) {
    return value;
  }
}

対象文字列の右側から指定した桁数分だけ値を取得するというメソッドになります。
これらの詳しい説明は以下に掲載していますのでチェックしてみてください。
Java 左から右から指定された文字数を取得する方法 – クラス String

本題に戻りましょう。

このメソッドを使って「1:23」の先頭に”0″を付けて「01:23」とし、右から5桁の値を取得して評価すれば、時刻型として認められるという方法です。
isTimeType メソッドの以下の部分を変更します。

Matcher m = p.matcher(value);

Matcher m = p.matcher(rightstring("0"+value, 5));

念のため、修正したソースを掲載しておきます。

/**
 * 指定された文字列が時刻型かどうかを返します。
 *
 * @param value 文字列
 * @return true:正常, false:異常
 */
public static boolean isTimeType(String value) {
  if ( value == null || "".equals(value) )
    return false;
  Pattern p = Pattern.compile("^([0-1][0-9]|[2][0-3]):[0-5][0-9]$");
  Matcher m = p.matcher(rightstring("0"+value, 5));
  if ( !m.find() )
    return false;
  return true;
}

では、改めてもう一度テストします。テストソースは上述のものと同じです。
結果はこうなります。

null    false
空文字  false
XYZ     false
1234    false
1:23    true
12:34   true
99:99   false
24:00   false
00:00   true
23:59   true

はい、「1:23」も時刻型として認められました。どちらを使うかは仕様に合わせて検討してくださいね。


まとめ

Pattern クラスと Matcher クラスは時刻型のチェック以外にも利用されますので、しっかり覚えておきましょう。時間管理は実務の中で重要な役割を担っています。もちろん今回ご紹介した以外の方法でもチェック方法があると思います。いろいろ探してベストな方法を見つけてください。

また、今回ご紹介した方法で不具合などあればコメントでご指摘いただけると助かります。


おつかれさまでした。

LINEで送る
Pocket

この記事がお役に立ちましたら シェア をお願いいたします。

Javaの勉強が思うように進まないときは!

Javaの勉強が思うように進まないのであれば、プロに直接質問ができる プログラミングスクール を検討してみてはいかがでしょうか?プログラミングスクールに申し込めば、短期間で一定のスキルを身に着けることができます!

Javaコースあり!オンライン完結型 テックアカデミー TechAcademy [テックアカデミー]

どこかに通う必要なく、自宅でプログラミングやアプリ開発を学ぶことができるのが特徴のスクールです。未経験からプロになるまで最短4週間という、超短期集中型の学習ができます。年齢層は10代〜40代の男女が中心で、学引があり多くの学生が受講しているそうですよ。オンラインで受講ができるスクールですので、全国どこからでも学習ができますね。

更にさらに、パーソナルメンターにチャット質問できちゃうんです!!

これは素晴らしいことですよ!ハマったり困ったことが起こるのがプログラミングの世界。知っている誰かに聞けば数分で解決することが、自分だけだと何時間もかかったりしますから!いや、これホントですよ。

しかし、便利な世の中になりましたよねー。一昔前ではオンラインで学習できるなんて、思いもよりませんでしたから。講師もバリバリのエンジニアですので、現場で使えるスキルを教えてもらえます。なんとも素晴らしいスクールがあったものですね。学割を使えば社会人より半額以下で受講できますから、学生さんには超おすすめです。

これから Java プログラミングを勉強して、将来はプログラマーとして活躍したいと思っている方には、就職保証付きJavaエンジニアコース というのがおすすめです。就職先まで保証してくれるとなれば、もう安心して学習に専念できますね。夢への第一歩はここから始まるのかも。あ、将来はライバルですね^^

オンラインスクールですから営業エリアは全国です。
気になる方は一度チェックしてみてください。無料の動画説明会も常時開催していますよ。


Javaコースあり!未経験者にウケてる KENスクール パソコンスクール・パソコン教室 【KENスクール】個別指導のWeb-DTP・OA・IT PCスクール

理解度や学習ペースに合わせて、一人ひとりが納得して前進できる授業を提供してくれるのが特徴です。特に課題製作は現場さながらで、実務に即したものとなっていますので短期でのスキルアップが望めます。自宅学習のサポートも充実していて、授業内容をいつでもビデオで振り返ることができるのもうれしいですね。好きな時間に好きな場所で、無理なくスケジューリングできるので、仕事の忙しい方でも柔軟に学ぶことができますよ。

更にさらに、なんと 就職サポート をしてくれるというのですから驚きです!!

履歴書の書き方から面接指導、求人の紹介など、具体的な就職先まで提案してくれるんです!私も「もっと早く出会いたかったなぁー、こんなスクール」・・・って思っちゃいました^^

東京・神奈川・愛知・大阪を営業エリアとされています。
まずは気軽に 無料体験予約 に申し込んでみるのもアリですよ。


コメントを残す

お名前 (必須)
メールアドレス
(アドレスは公開されません)

コメント(必須)

Trackback URL