• 締切
  • 暇なときにでも

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

  • 質問No.639043
  • 閲覧数372
  • ありがとう数8
  • 回答数6

お礼率 3% (2/62)

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

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

回答 (全6件)

  • 回答No.6

ベストアンサー率 71% (5/7)

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

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());

};

}
  • 回答No.5

ベストアンサー率 43% (58/132)

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;
}
}

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

ベストアンサー率 43% (58/132)

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スケールまで伸びたときとかは考慮しなくていいのですか?
  • 回答No.3

ベストアンサー率 43% (58/132)

120→2:00:00
の最後の00っていったい?
  • 回答No.2

ベストアンサー率 51% (177/346)

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

お礼率 3% (2/62)

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

ベストアンサー率 41% (245/593)

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

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;
}
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ページ先頭へ