如何将小数值格式化为小时和分钟?

时间:2014-12-16 07:41:34

标签: java formatting decimalformat

例如,如果用户输入是1.71(1小时71分钟),那么我想将其转换为2.11(2小时11分钟)

DecimalFormat time = new DecimalFormat("##.## p.m");

int userInput = 1.71;

System.out.print(time.format(userInput));

3 个答案:

答案 0 :(得分:1)

将输入解析为日期,然后将日期格式化为输出格式:

  Scanner sc = new Scanner(System.in);
  DateFormat df = new SimpleDateFormat("HH.mm");
  DateFormat dfout = new SimpleDateFormat("H.mm a");
  Date date  = df.parse(sc.next());
  System.out.println(dfout.format(date));

答案 1 :(得分:0)

我不确定我的问题是否正确,但不应该做以下工作?

int hours = (int)userInput;
decimal minutestmp = ((userInput - hours) * 60);
int minutes = (int)minutestmp;

String TimeString = hours + ":" + minutes;
Date date = new SimpleDateFormat("HH:mm").parse(TimeString);
String newTimeString = new SimpleDateFormat("H:mm").format(date);

答案 2 :(得分:0)

ISO 8601

日期时间字符串的ISO 8601标准定义了他们称之为Durations的内容的格式:PnYnMnDTnHnMnS

约达时间

Joda-Time库知道如何解析和生成这样的字符串。

首先,将输入转换为这样的字符串。然后将新字符串输入Joda-Time。最后请Joda-Time重新计算小时和分钟。 StackOverflow多次覆盖了所有这些。请搜索详细信息。

要翻译该输入,请替换句号,然后添加前缀和附加。

String d = "PT" + "1.71".replace( ".", "H") + "M";  // PT1H71M

喂Joda-Time。

Period period = Period.parse( d );

将分钟标准化。

Period p = period.normalizedStandard();

或者,您可以拆分输入的小时和分钟部分,然后将它们作为整数提供给Period的构造函数。