2017.03.02

Javaプログラミング

時分秒変換

与えられた時間を時分秒に変換するプログラムの作り方を解説しています。

時間は3つの単位、時間/分/秒のいずれかで与え、その時間を時分秒に分けるプログラムです。

以下は変換例です。

3.5時間→3時間30分00秒
170分→2時間50分00秒
4000秒→1時間6分40秒

時間は実数(小数点あり)で、分と秒は整数で与えます。

Javaソースコード

このプログラムのソースコードは以下のとおりです。

TimeSample.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
class MyTime
{
	// 時間を秒(second)で保持
	private int second = 0;


	// 秒をセット
	public void set_second( int s )
	{
		second = s;
	}	

	// 分を秒でセット
	public void set_minute( int m )
	{
		// 分を秒に変換(1分=60秒)
		second = m * 60;
	}	

	// 時間を秒でセット(実数)
	public void set_hour( double h )
	{
		// 時間を秒に変換(1時間=3600秒)
		second =  (int)( h * 3600.0 );
	}	


	// 時間成分を返す
	public int get_hour()
	{
		// 秒を3600で割って時間を計算
		return second / 3600;
	}


	// 分成分を返す
	public int get_minute()
	{
		// 秒を60で割って分を計算
		// さらに60で割ったあまりを分成分とする
		return ( second / 60 ) % 60;
	}


	// 秒成分を返す
	public int get_second()
	{
		// 秒を60で割ったあまりを秒成分とする
		return second % 60;
	}


}


public class TimeSample {
	public static void main( String[] args ) {
		// MuTimeクラスの作成
		MyTime mt = new MyTime();

		int    s, m;
		double h;

		// 秒を設定し、時分秒に変換
		s = 123456;
		mt.set_second( s );
		System.out.println();
		System.out.println( s + "秒=" + mt.get_hour() + "時間"
			 + mt.get_minute() + "分" + mt.get_second() + "秒" );

		// 分を設定し、時分秒に変換
		m = 800;
		mt.set_minute( m );
		System.out.println();
		System.out.println( m + "分=" + mt.get_hour() + "時間"
			 + mt.get_minute() + "分" + mt.get_second() + "秒" );

		// 時間を設定し、時分秒に変換
		h = 5.75;
		mt.set_hour( h );
		System.out.println();
		System.out.println( h + "時間=" + mt.get_hour() + "時間"
			 + mt.get_minute() + "分" + mt.get_second() + "秒" );
	}
} 

実行結果

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis TimeSample.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac TimeSample.java

実行

C:\talavax\javasample>java TimeSample
	
123456秒=34時間17分36秒

800分=13時間20分0秒

5.75時間=5時間45分0秒

Javaソースコード解説

ここからは、このソースコードを上から順番に解説していきます。

001
class MyTime

時分秒への変換を行うクラス名を、MyTimeとしています。

003
004
	// 時間を秒(second)で保持
	private int second = 0;

MyTimeクラスint型メンバ変数secondを定義し、初期値に0を入れています。

007
008
009
010
011
	// 秒をセット
	public void set_second( int s )
	{
		second = s;
	}	

MyTimeクラスに秒を設定するメソッドset_secondです。引数sで与えられた値をそのままsecondに代入しています。

013
014
015
016
017
018
	// 分を秒でセット
	public void set_minute( int m )
	{
		// 分を秒に変換(1分=60秒)
		second = m * 60;
	}	

MyTimeクラスに分を設定するメソッドset_minuteです。引数mで与えられた値に60を掛けてsecondに代入しています。分の値に60を掛けて単位を秒に変換しています。(1分は60秒)

020
021
022
023
024
025
	// 時間を秒でセット(実数)
	public void set_hour( double h )
	{
		// 時間を秒に変換(1時間=3600秒)
		second =  (int)( h * 3600.0 );
	}	

MyTimeクラスに時間を設定するメソッドset_hourです。引数hで与えられた値に3600を掛けてsecondに代入しています。時間の値に3600を掛けて単位を秒に変換しています。(1時間は3600秒)

double型変数hの値に3600.0を掛けて、int型変数secondに型キャストして値を代入しています。このとき、小数点以下の値は切り捨てられます。

028
029
030
031
032
033
	// 時間成分を返す
	public int get_hour()
	{
		// 秒を3600で割って時間を計算
		return second / 3600;
	}

MyTimeクラスに設定された時間の時間成分だけを取得するメソッドget_hourです。秒で保持している設定値secondを3600で割って時間部分を計算しています。この計算で割り切れなかった余りは切り捨てです。

036
037
038
039
040
041
042
	// 分成分を返す
	public int get_minute()
	{
		// 秒を60で割って分を計算
		// さらに60で割ったあまりを分成分とする
		return ( second / 60 ) % 60;
	}

MyTimeクラスに設定された時間の分成分だけを取得するメソッドget_minuteです。秒で保持している設定値secondを60で割って、その値をさらに60で割った余りを分成分として計算しています。秒(second)を60で割って、時間の単位を分に変換し、時間成分に変換できない余りを分成分として抽出しています。式で表すと分=(時間成分×60)+分成分となり、分を60で割った余りが分成分になることがわかります。

045
046
047
048
049
050
	// 秒成分を返す
	public int get_second()
	{
		// 秒を60で割ったあまりを秒成分とする
		return second % 60;
	}

MyTimeクラスに設定された時間の秒成分だけを取得するメソッドget_secondです。秒で保持している設定値secondを60で割った余りを秒成分として抽出しています。60で割り切れる時間は分成分として抽出できるので、60で割った余りが秒成分になります。式で表すと秒=(分成分×60)+秒成分となり、秒を60で割った余りが秒成分になることがわかります。

056
public class TimeSample {

クラス名を、TimeSampleとしています。

057
	public static void main( String[] args ) {

このmainメソッドからプログラムを実行します。

058
059
		// MuTimeクラスの作成
		MyTime mt = new MyTime();

MyTimeのインスタンスを作っています。

061
062
		int    s, m;
		double h;

このプログラムで使用する時間、分、秒の変数をそれぞれh、m、sという名前で宣言しています。

064
065
066
067
068
		// 秒を設定し、時分秒に変換
		s = 123456;
		mt.set_second( s );
		System.out.println();
		System.out.println( s + "秒=" + mt.get_hour() + "時間"

MyTimeのset_secondメソッドに秒を設定し、その時間を時間/分/秒の成分に分解した結果を表示しています。

070
071
072
073
074

		// 分を設定し、時分秒に変換
		m = 800;
		mt.set_minute( m );
		System.out.println();

MyTimeのset_minuteメソッドに分を設定し、その時間を時間/分/秒の成分に分解した結果を表示しています。

076
077
078
079
080
			 + mt.get_minute() + "分" + mt.get_second() + "秒" );

		// 時間を設定し、時分秒に変換
		h = 5.75;
		mt.set_hour( h );

MyTimeのset_hourメソッドに時間を設定し、その時間を時間/分/秒の成分に分解した結果を表示しています。

与える時間を変えて計算結果を確認してください。

以上です。

関連コンテンツ

Javaの学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

生まれた日から現在の年齢を求めるプログラムを作成してみませんか?

2015.12.15

基本的な計算である足し算(加法)/引き算(減法)/掛け算(乗法)/割り算(除法)を行うプログラム作成。

2020.03.23

割り算で割り切れずに残った端数を剰余(余り)といいます。この剰余の計算をJavaのソースコードを使って解説しています。

2020.03.23

メソッドを抜けるときに使用するreturn文について説明しています。

2020.03.20

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

プログラムの最初に実行されるメソッドは?

2022.12.13

プログラミングで使う変数って何?

2020.03.23

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

自然数と整数って何が違う?

2020.03.23

Javaプログラムの構成について解説しています。詳しくは、こちらをご覧ください。

2020.03.23

メソッドの定義方法を詳しく解説しています。Javaのサンプルソースコードを使った説明もあります。

2020.03.23

データの型を変換する方法を詳しく解説しています。例)int型 → long型

2015.11.01

割り算で「割り切れる」、「割り切れない」ってどういうこと?

広告