在java中向现有时间添加时间
可能重复:在java中向现有时间添加时间,java,date,time,date-arithmetic,Java,Date,Time,Date Arithmetic,可能重复: 我无法解决以下问题,请帮助我。那就是我正在将现有时间添加到一些其他时间(分钟、秒或小时)。我无法写出我写的以下wt类型,我提到没有给出正确答案 String allexam_end_time="18:59:00";//48540000 long oneminute=60000; try{ SimpleDateFormat sdfkk = new SimpleDateFormat("hh:mm:ss"); Date reqEndtimekk = sdfkk.parse
我无法解决以下问题,请帮助我。那就是我正在将现有时间添加到一些其他时间(分钟、秒或小时)。我无法写出我写的以下wt类型,我提到没有给出正确答案
String allexam_end_time="18:59:00";//48540000
long oneminute=60000;
try{
SimpleDateFormat sdfkk = new SimpleDateFormat("hh:mm:ss");
Date reqEndtimekk = sdfkk.parse(allexam_end_time);
long total=reqEndtimekk.getTime()+oneminute;
System.out.println("TOtal miliseconds "+reqEndtimekk.getTime()+oneminute);
System.out.println("total---------"+total);
int s = (int)(total / 1000) % 60;
int m = (int)(total / (1000 * 60)) % 60;
int h= (int) (total / (1000 * 60 * 60)) % 24;
System.out.println(h+":"+m+":"+s);
}catch(Exception e){
}
输出
但我需要回答,若加上一分钟意味着输出应该是19:00:00
如何解决?您可以使用GregoriaCalendar,下面是一个代码示例:
String allexam_end_time = "18:59:00";// 48540000
SimpleDateFormat sdfkk = new SimpleDateFormat("hh:mm:ss");
Date reqEndtimekk = sdfkk.parse(allexam_end_time);
Calendar instance = GregorianCalendar.getInstance();
instance.setTime(reqEndtimekk);
//add one minute
instance.add(GregorianCalendar.MINUTE, 1);
System.out.println(sdfkk.format(instance.getTime()));
输出
07:00:00
也许这会有帮助
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TimeUtility {
public static void main(String[] args) throws ParseException {
String examEndTime = "18:59:00";
System.out.println(modifyTime(examEndTime, 60));
}
private static String modifyTime(String origTime, int modSecs) throws ParseException {
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
timeFormat.setLenient(false);
Date time = timeFormat.parse(origTime);
time.setSeconds(modSecs);
return timeFormat.format(time);
}
}
输出将为19:00:00
我觉得您的代码可能正在进行一些时区转换。
例如,我将18:59:00计算为(18*60*60+59*60)*1000=68340000ms。但是如果我将相同的内容放入Java并调用getTime(),我得到39540000ms,你得到48540000
其他一些回复是解决问题的更好方法(一个主要的方法是在最后调用sdfkk.format(requendtimekk),而不是再次获取h/m/s),但是您的but似乎在时区附近。
}catch(异常e){}
在坏代码中永远不要这样做。把它改成catch(例外e){e.printStackTrace();}@user1906191请告诉我你到底想要什么?你想在分、秒和小时内找出两个时间之间的差异吗???我想在19:00:00这种格式只需将SimpleDataFormat的“hh”更改为“hh”,它将显示19而不是7:)嗨,请告诉我如何添加毫秒,我不想以60通过,我想传递毫秒我如何添加18:59:00+毫秒想要19:00:00格式的ans请将GregorianCalendar.MINUTE更改为GregorianCalendar.millis秒。。。所以一分钟后应该是:instance.add(gregorianalendar.millished,60000);您好,请告诉我如何添加毫秒,我不想通过60,我想通过毫秒我如何添加18:59:00+毫秒想要19:00:00格式的ans请
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TimeUtility {
public static void main(String[] args) throws ParseException {
String examEndTime = "18:59:00";
System.out.println(modifyTime(examEndTime, 60));
}
private static String modifyTime(String origTime, int modSecs) throws ParseException {
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
timeFormat.setLenient(false);
Date time = timeFormat.parse(origTime);
time.setSeconds(modSecs);
return timeFormat.format(time);
}
}