Java 在给定时间内增加分钟

Java 在给定时间内增加分钟,java,time,indexof,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("E

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

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();
    }
}
我知道我需要找到“:”的索引,我的感觉是使用模和加法来求解,但我不确定如何使用此代码

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String time1 = sc.nextLine();
        String time2 = sc.nextLine();
        String[] time1parse = time1.split(":");
        String hour1 = time1parse[0];
        int hour1int = Integer.parseInt(hour1);
        String minutes1 = time1parse[1];
        int minutes1int = Integer.parseInt(minutes1)(
        String time2parse = time2.split(":");
        String hour2 = time2parse[0];
        int hour2int = Integer.parseInt(hour2);
        String minutes2 = time2parse[1];
        int minutes2int = Integer.parseInt(minutes2);



        //Math
        int minutes=minutes1int+minutes2int;
        int hours=hours1int+hours2int;
        hours+=minutes%60;
        minutes-=(minutes%60)*60;
        System.out.println(hours+":"+minutes);
    }
}
我对代码所做的是接受2个输入,然后使用string类的split方法解析它们。然后我将字符串数组转换成不同的字符串。然后,我把这些字符串变成整数。最后我计算了一下,把所有的分钟和小时转换成实际的单位。

你可以使用split

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”)

结果打印

System.out.println("resulting time in HH:mm format: " 
        + String.format("%02d", hours) + ":" + String.format("%02d", minutes));
注意,您可以使用以下代码获得相同的结果(所有的计算都是通过
Calendar
完成的):


嗯,我得到了一些指导方针……以下是他们在日期上读到的内容。把日期复印一份。查找“:”的索引。将时间中的小时部分复制到新变量。将小时字符串解析为数字。接下来,将分钟数保存到另一个变量Parse the minutes将新的分钟数添加到最近解析的分钟数调整分钟数为0-59,如果需要,将小时数添加到小时数。如果需要,还可以将小时数调整为0-23。打印结果@格兰特·克拉克:你的评论看起来像是你(或其他人)把问题分解成了你可以编写代码的步骤。所以,去做吧,或者在另一个问题中告诉我们你坚持了这些步骤中的哪一个。你可以简单地使用日期/时间API,解析值,更新值并重新格式化。使用数据/时间API。它们经过了很好的测试,非常有用(即使JodaTime设计得不是很好)。请参阅一个好例子中@Matoni回答的最后一部分。海报下面的评论让这听起来像是一个家庭作业问题。
System.out.println("resulting time in HH:mm format: " 
        + String.format("%02d", hours) + ":" + String.format("%02d", minutes));
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));