Java 如何增加我的时间一小时

Java 如何增加我的时间一小时,java,datetime,Java,Datetime,我的时间格式如下,我使用此值设置按钮的文本 String strDateFormat = "HH:mm: a"; SimpleDateFormat sdf ; sdf = new SimpleDateFormat(strDateFormat); startTime_time_button.setText(sdf.format(date)); 现在我的问题是,, 可以在这个时间格式中增加一小时吗 Calendar cal = Calendar.getInstance(); cal.setTim

我的时间格式如下,我使用此值设置按钮的文本

String strDateFormat = "HH:mm: a";
SimpleDateFormat sdf ;
 sdf = new SimpleDateFormat(strDateFormat);
startTime_time_button.setText(sdf.format(date));
现在我的问题是,, 可以在这个时间格式中增加一小时吗

Calendar cal = Calendar.getInstance();
cal.setTime(setYourTimeHereInDateObj);
cal.add(Calendar.HOUR, 1);
Date timeAfterAnHour = cal.getTime();
//now format this time 


    • 您必须使用
      日历

      Calendar cal = Calendar.getInstance();
      cal.setTime(date);
      cal.add(Calendar.HOUR_OF_DAY, 1);
      date = cal.getTime();
      

      我认为最好、最简单的方法是使用Apache Commons Lang:

      Date incrementedDate = DateUtils.addHour(startDate, 1);
      

      如果您不能使用Jabal的建议(即不允许使用非JDK库),您可以使用以下方法:

      long hour = 3600 * 1000; // 3600 seconds times 1000 milliseconds
      Date anotherDate = new Date(date.getTime() + hour);
      
      如果您正在寻找时区转换,只需将其分配给格式化程序即可,它的工作速度会更快:

      TimeZone timeZone = TimeZone.getTimeZone("UTC"); // put your time zone instead of UTC
      sdf.setTimeZone(timeZone);
      

      顺便说一句,硬编码日期格式不是最好的主意。除非有充分的理由不这样做,否则应该使用对最终用户的区域设置有效的区域设置(
      DateFormat df=DateFormat.getTimeInstance(DateFormat.DEFAULT,Locale);
      )。否则,您将创建i18n缺陷(谁在乎,我知道)。

      如果您不知道在
      Calendar.HOUR
      Calendar.HOUR\u OF_DAY
      之间使用什么。使用日历。毫秒

      val nextHour: Date = Calendar.getInstance().also {
              it.time = Date() // set your date time here
          }.also {
              it.add(Calendar.MILLISECOND, 1 * 60 * 60 * 1000) // 1 Hour
          }.time
      

      嗯,也许是这样?也许这有帮助:你已经发布了几乎相同的问题(由joe776链接的问题)。
      HOUR\u OF_YEAR
      可能
      DAY
      :)不,你不必:)问题是,有时你不能(Android,GAE)。我不这么认为,但我喜欢你的方式。它比使用日历快吗?你说有时候你不能使用日历,为什么?我不知道它是否比日历快(如果不使用探查器,我就不能发出如此有力的声明)。另外,我没有说我不能使用日历,我的意思是有些平台根本不包含日历实现(例如Google App Engine)。在这种情况下,开发人员必须坚持更新。除非GAE允许你上传ICU,我可以在Android中使用GregoriaCalendar吗?类似于:日历mcalendar=new gregorianalendar();mcalendar.add(Calendar.HOUR\u OF_DAY,1);