• 締切済み

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

分を表す数字(int型)を時間形式に直しString型で返す 以下のようなメソッドを作成したいのですが、 実装方法を教えて頂けないでしょうか↓ /** * 分(int型) → 時間:分:秒(String型) に直して返すメソッド。 * int minute = 120; * String time = timeFormat( minute ); * この時、timeの値は、" 2:00:00 " */ public String timeFormat(int minute) { ~ 実装 ~ }

みんなの回答

  • ssr-y6
  • ベストアンサー率71% (5/7)
回答No.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()); }; }

  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.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; } } 勘違いしてました。 時:分:秒だったのですね。 マイナスの値にも対応してみました。

  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.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スケールまで伸びたときとかは考慮しなくていいのですか?

  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.3

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

回答No.2

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

kawaen
質問者

補足

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

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.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; else sHH = "" + iHH; if (iMM < 10 ) sMM = "0" + iMM; else sMM = "" + iMM; strRet = "" + sHH + ":" + sMM + ":00"; Return strRet; }

関連するQ&A