Java:如何在我的时间添加10分钟

我得到这个时间

String myTime = "14:10"; 

现在我想补充10分钟,这个时间是14:20

这是可能的,如果是这样,怎么样?

谢谢

像这样的东西

  String myTime = "14:10"; SimpleDateFormat df = new SimpleDateFormat("HH:mm"); Date d = df.parse(myTime); Calendar cal = Calendar.getInstance(); cal.setTime(d); cal.add(Calendar.MINUTE, 10); String newTime = df.format(cal.getTime()); 

作为一个公平的警告,如果在这10分钟内涉及夏令时,可能会有一些问题。

我会使用Joda Time ,将时间parsing为LocalTime ,然后使用

 time = time.plusMinutes(10); 

简短但完整的程序来演示这一点:

 import org.joda.time.*; import org.joda.time.format.*; public class Test { public static void main(String[] args) { DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm"); LocalTime time = formatter.parseLocalTime("14:10"); time = time.plusMinutes(10); System.out.println(formatter.print(time)); } } 

请注意,如果可能的话,我肯定会使用Joda Time而不是java.util.Date/Calendar – 这是一个更好的API。

使用Calendar.add(int field,int amount)方法。

您需要将其转换为date,然后在其中添加数秒,然后将其转换回string。

Java 7时间API

  DateTimeFormatter df = DateTimeFormatter.ofPattern("HH:mm"); LocalTime lt = LocalTime.parse("14:10"); System.out.println(df.format(lt.plusMinutes(10))); 

在上面的答案中有很多简单的方法。 这只是另一个想法。 您可以将其转换为毫秒,并添加TimeZoneOffset并以毫秒为单位添加/减去分钟/小时/天等。

 String myTime = "14:10"; int minsToAdd = 10; Date date = new Date(); date.setTime((((Integer.parseInt(myTime.split(":")[0]))*60 + (Integer.parseInt(myTime.split(":")[1])))+ date1.getTimezoneOffset())*60000); System.out.println(date.getHours() + ":"+date.getMinutes()); date.setTime(date.getTime()+ minsToAdd *60000); System.out.println(date.getHours() + ":"+date.getMinutes()); 

输出:

 14:10 14:20 

我build议将时间存储为整数,并通过除法和模运算符进行调整,一旦完成将整数转换为所需的string格式。

我使用下面的代码将一定的时间间隔添加到当前时间。

  int interval = 30; SimpleDateFormat df = new SimpleDateFormat("HH:mm"); Calendar time = Calendar.getInstance(); Log.i("Time ", String.valueOf(df.format(time.getTime()))); time.add(Calendar.MINUTE, interval); Log.i("New Time ", String.valueOf(df.format(time.getTime())));