こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

分を表す数字(int型)を時間形式に直しString型で返したい

分を表す数字(int型)を時間形式に直しString型で返す
以下のようなメソッドを作成したいのですが、
実装方法を教えて頂けないでしょうか↓

/**
* 分(int型) → 時間:分:秒(String型) に直して返すメソッド。
* int minute = 120;
* String time = timeFormat( minute );
* この時、timeの値は、" 2:00:00 "
*/
public String timeFormat(int minute) {
~ 実装 ~
}

投稿日時 - 2003-08-27 17:11:16

QNo.639043

暇なときに回答ください

このQ&Aは役に立ちましたか?

8人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.6

 以下のように、数値として修正してから、文字列として調整する方法もあります。

public class minute {

public static void main(String args[]) {

int Minute;

try {

Minute = Integer.parseInt(args[0]);
System.out.println(timeFormat(Minute));

} catch (Exception e) { System.out.println(e.toString()); };

};

public static String timeFormat(int minute) {

int i, j;
boolean f;
StringBuffer s;

if (minute < 0) {
minute = -minute;
f = true;
}
else f = false;

i = ((minute / 60) * 100 + (minute % 60)) * 100;

s = new StringBuffer(Integer.toString(i));
j = s.length();
if (j > 2) s.insert(j - 2, ':');
if (j > 4) s.insert(j - 4, ':');
if (f) s.insert(0, '-');

return(s.toString());

};

}

投稿日時 - 2008-09-20 22:16:13

ANo.5

import java.text.DecimalFormat;

public class TimeTransrater {

public static void main(String[] args) {
//120→2:00:00
System.out.println(getStringTime(120));
//0→0:00:00
System.out.println(getStringTime(0));
//-1→-0:01:00
System.out.println(getStringTime(-1));
//-120→-2:00:00
System.out.println(getStringTime(-120));
//-119→-1:59:00
System.out.println(getStringTime(-119));

}

public static String getStringTime(int minutes) {
String sign = minutes >= 0 ? "" : "-";
int hour = Math.abs(minutes / 60);
int min = Math.abs(minutes % 60);
int sec = 0;
String separater = ":";
String ret =
sign
+ hour
+ separater
+ new DecimalFormat("00").format(min)
+ separater
+ new DecimalFormat("00").format(sec);
return ret;
}
}

勘違いしてました。
時:分:秒だったのですね。
マイナスの値にも対応してみました。

投稿日時 - 2003-08-28 00:20:30

ANo.4

public static String getStringTime(int minutes) {
int m = minutes / 60;
int sec = minutes % 60;
int msec = 0;
String separater = ":";
return m
+ separater
+ new DecimalFormat("00").format(sec)
+ separater
+ new DecimalFormat("00").format(msec);
}

こうやればできますけど。
でもhourスケールまで伸びたときとかは考慮しなくていいのですか?

投稿日時 - 2003-08-28 00:08:59

ANo.3

120→2:00:00
の最後の00っていったい?

投稿日時 - 2003-08-28 00:01:26

ANo.2

#1の方とやってることは一緒。
DecimalFormat myFormat = new DecimalFormat("00");
return (myFormat.format(minute / 60) + ":" +
 myFormat.format(minute % 60) + ":00");
 

投稿日時 - 2003-08-27 17:47:33

補足

結果が「02:00:00」と出たのですが
出来れば、時間が一桁の時は最初の0を取って
「2:00:00」と表示したいのですが、
そのような事は可能でしょうか・・?
もし可能でしたら、方法を、教えて頂けないでしょうか・・
度々すみません

投稿日時 - 2003-08-27 18:58:15

ANo.1

日時系の関数はそれなりにありますが、このケースの場合は単純に計算すればよいのでは?
※ テストしていないため、動作保証はできません…。
________________________

public String timeFormat(int minute) {
String strRet;
String sHH;
String sMM;
int iHH;
int iMM;

iMM = minute % 60;
iHH = (minute-iMM) / 60;

if (iHH < 10 )sHH = "0" + iHH;
elsesHH = "" + iHH;

if (iMM < 10 )sMM = "0" + iMM;
elsesMM = "" + iMM;

strRet = "" + sHH + ":" + sMM + ":00";

Return strRet;
}

投稿日時 - 2003-08-27 17:23:25

あなたにオススメの質問