在给定时间内添加分钟数

时间:2016-01-29 19:56:22

标签: java time indexof

我需要创建一个程序,在用户给出的时间内添加分钟。 到目前为止我有这个:

import java.util.Scanner;
public class LaterTime {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter a time in the format Hour:Minutes ");
        String Time = scan.next();
    }
}

我知道我需要找到"的索引:"我的感觉是使用模数和加法来解决,但我不确定如何。

2 个答案:

答案 0 :(得分:1)

您可以使用拆分

String[] parts = time.split(":");
String hours = parts[0];
String minutes = parts[1];

或者您可以使用子字符串方法

String minutes = time.substring(time.indexOf(':'), time.length());

将分钟从String转换为int

int m = Integer.parseInt(minutes);

将分钟添加到用户给出的时间:

int userHours = ...;
int userMinutes = ...;

int parsedMinutes = ...;

int extraHours = (userMinutes + parsedMinutes) / 60;
int remainingMinutes = (userMinutes + parsedMinutes) % 60; // modulo i.e. remainder after division 

int hours = (userHours + extraHours) % 24; 
int minutes = remainingMinutes;

您可以使用TimeUnit进行时间单位之间的转换:

int extraHours = TimeUnit.MINUTES.toHours(userMinutes + parsedMinutes);
int remainingMinutes = (userMinutes + parsedMinutes) - extraHours * 60;

如果您需要格式化前导零的数字(5 - >" 05",23 - >" 23")

String formatted = String.format("%02d", number); // 2 decimal places

结果打印

System.out.println("resulting time in HH:mm format: " 
        + String.format("%02d", hours) + ":" + String.format("%02d", minutes));

注意,您可以使用以下代码获得相同的结果(所有数学都由Calendar完成):

Date now = new Date();

// set time given by user
Calendar cal = Calendar.getInstance();
cal.setTime(now);
cal.set(Calendar.HOUR_OF_DAY, userHours);
cal.set(Calendar.MINUTE, userMinutes);
Date date = cal.getTime();

// add minutes 
cal.setTime(userDateTime);
cal.add(Calendar.MINUTE, parsedMinutes);
Date updated = cal.getTime();

// date formats
SimpleDateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm);
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm");

System.out.println(dateTimeFormat.format(updated));
System.out.println(timeFormat.format(updated));

答案 1 :(得分:0)

使用此代码

input {
  vertical-align: top;
}

我对代码所做的是接受2个输入,然后我使用字符串类的split方法解析它们。然后我将字符串数组转换为不同的字符串。在那之后,我把这些字符串变成了整数。最后我做了数学计算,并将所有的分钟和小时转换成实际单位。