2017/03/02 公開
・時分秒変換
与えられた時間を時分秒に変換するプログラムの作り方を解説しています。
時間は3つの単位、時間/分/秒のいずれかで与え、その時間を時分秒に分けるプログラムです。例えば、3.5時間→3時間30分00秒、170分→2時間50分00秒、4000秒→1時間6分40秒というような感じです。
時間は実数(小数点あり)で、分と秒は整数で与えます。
このプログラムのソースコードは以下のとおりです。
TimeSample.java ← クリックしてダウンロードページに移動001: class MyTime 002: { 003: // 時間を秒(second)で保持 004: private int second = 0; 005: 006: 007: // 秒をセット 008: public void set_second( int s ) 009: { 010: second = s; 011: } 012: 013: // 分を秒でセット 014: public void set_minute( int m ) 015: { 016: // 分を秒に変換(1分=60秒) 017: second = m * 60; 018: } 019: 020: // 時間を秒でセット(実数) 021: public void set_hour( double h ) 022: { 023: // 時間を秒に変換(1時間=3600秒) 024: second = (int)( h * 3600.0 ); 025: } 026: 027: 028: // 時間成分を返す 029: public int get_hour() 030: { 031: // 秒を3600で割って時間を計算 032: return second / 3600; 033: } 034: 035: 036: // 分成分を返す 037: public int get_minute() 038: { 039: // 秒を60で割って分を計算 040: // さらに60で割ったあまりを分成分とする 041: return ( second / 60 ) % 60; 042: } 043: 044: 045: // 秒成分を返す 046: public int get_second() 047: { 048: // 秒を60で割ったあまりを秒成分とする 049: return second % 60; 050: } 051: 052: 053: } 054: 055: 056: public class TimeSample { 057: public static void main( String[] args ) { 058: // MuTimeクラスの作成 059: MyTime mt = new MyTime(); 060: 061: int s, m; 062: double h; 063: 064: // 秒を設定し、時分秒に変換 065: s = 123456; 066: mt.set_second( s ); 067: System.out.println(); 068: System.out.println( s + "秒=" + mt.get_hour() + "時間" 069: + mt.get_minute() + "分" + mt.get_second() + "秒" ); 070: 071: // 分を設定し、時分秒に変換 072: m = 800; 073: mt.set_minute( m ); 074: System.out.println(); 075: System.out.println( m + "分=" + mt.get_hour() + "時間" 076: + mt.get_minute() + "分" + mt.get_second() + "秒" ); 077: 078: // 時間を設定し、時分秒に変換 079: h = 5.75; 080: mt.set_hour( h ); 081: System.out.println(); 082: System.out.println( h + "時間=" + mt.get_hour() + "時間" 083: + mt.get_minute() + "分" + mt.get_second() + "秒" ); 084: } 085: }
TimeSample.javaの出力結果
123456秒=34時間17分36秒 800分=13時間20分0秒 5.75時間=5時間45分0秒
ここからは、このソースコードを上から順番に解説していきます。
001: class MyTime
時分秒への変換を行うクラス名を、MyTimeとしています。
003: // 時間を秒(second)で保持 004: private int second = 0;
MyTimeクラスのint型のメンバ変数secondを定義し、初期値に0を入れています。
007: // 秒をセット 008: public void set_second( int s ) 009: { 010: second = s; 011: }
MyTimeクラスに秒を設定するメソッドset_secondです。引数sで与えられた値をそのままsecondに代入しています。
013: // 分を秒でセット 014: public void set_minute( int m ) 015: { 016: // 分を秒に変換(1分=60秒) 017: second = m * 60; 018: }
MyTimeクラスに分を設定するメソッドset_minuteです。引数mで与えられた値に60を掛けてsecondに代入しています。分の値に60を掛けて単位を秒に変換しています。(1分は60秒)
020: // 時間を秒でセット(実数) 021: public void set_hour( double h ) 022: { 023: // 時間を秒に変換(1時間=3600秒) 024: second = (int)( h * 3600.0 ); 025: }
MyTimeクラスに時間を設定するメソッドset_hourです。引数hで与えられた値に3600を掛けてsecondに代入しています。時間の値に3600を掛けて単位を秒に変換しています。(1時間は3600秒)
double型の変数hの値に3600.0を掛けて、int型の変数secondに型キャストして値を代入しています。このとき、小数点以下の値は切り捨てられます。
028: // 時間成分を返す 029: public int get_hour() 030: { 031: // 秒を3600で割って時間を計算 032: return second / 3600; 033: }
MyTimeクラスに設定された時間の時間成分だけを取得するメソッドget_hourです。秒で保持している設定値secondを3600で割って時間部分を計算しています。この計算で割り切れなかった余りは切り捨てです。
036: // 分成分を返す 037: public int get_minute() 038: { 039: // 秒を60で割って分を計算 040: // さらに60で割ったあまりを分成分とする 041: return ( second / 60 ) % 60; 042: }
MyTimeクラスに設定された時間の分成分だけを取得するメソッドget_minuteです。秒で保持している設定値secondを60で割って、その値をさらに60で割った余りを分成分として計算しています。秒(second)を60で割って、時間の単位を分に変換し、時間成分に変換できない余りを分成分として抽出しています。式で表すと分=(時間成分×60)+分成分となり、分を60で割った余りが分成分になることがわかります。
045: // 秒成分を返す 046: public int get_second() 047: { 048: // 秒を60で割ったあまりを秒成分とする 049: return second % 60; 050: }
MyTimeクラスに設定された時間の秒成分だけを取得するメソッドget_secondです。秒で保持している設定値secondを60で割った余りを秒成分として抽出しています。60で割り切れる時間は分成分として抽出できるので、60で割った余りが秒成分になります。式で表すと秒=(分成分×60)+秒成分となり、秒を60で割った余りが秒成分になることがわかります。
056: public class TimeSample {
クラス名を、TimeSampleとしています。
057: public static void main( String[] args ) {
このmainメソッドからプログラムを実行します。
058: // MuTimeクラスの作成 059: MyTime mt = new MyTime();
MyTimeのインスタンスを作っています。
061: int s, m; 062: double h;
このプログラムで使用する時間、分、秒の変数をそれぞれh、m、sという名前で宣言しています。
064: // 秒を設定し、時分秒に変換 065: s = 123456; 066: mt.set_second( s ); 067: System.out.println(); 068: System.out.println( s + "秒=" + mt.get_hour() + "時間"
MyTimeのset_secondメソッドに秒を設定し、その時間を時間/分/秒の成分に分解した結果を表示しています。
070: 071: // 分を設定し、時分秒に変換 072: m = 800; 073: mt.set_minute( m ); 074: System.out.println();
MyTimeのset_minuteメソッドに分を設定し、その時間を時間/分/秒の成分に分解した結果を表示しています。
076: + mt.get_minute() + "分" + mt.get_second() + "秒" ); 077: 078: // 時間を設定し、時分秒に変換 079: h = 5.75; 080: mt.set_hour( h );
MyTimeのset_hourメソッドに時間を設定し、その時間を時間/分/秒の成分に分解した結果を表示しています。
与える時間を変えて計算結果を確認してください。
■関連コンテンツ
Javaの変数 | Javaで扱う変数について解説 |
計算結果の表示 | 四則演算(足し算/引き算/掛け算/割り算)について |
ITで使われる単位 | ITで使われる単位を紹介 |
![]() |
計算結果の表示足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)の使い方を説明 |
■新着情報
2021.12.21 | 現在の日時を取得 | いまの年月日、時分秒? |
■広告
