我现在有一个时间2010-12-12 01:02:02
我想让小时数加8,然后显示时间为2010-12-12 09:02:02
我该如何去写代码实现,我写的如下,当小时数为个位数时,调试有错误:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date date1 = format.parse("2010-12-12 01:02:02");
 String SignTime = date1.toLocaleString().substring(0,11);
         System.out.println(SignTime);
         String SignTime1 = date1.toLocaleString().substring(11,13);
         int aa=Integer.parseInt(SignTime1)-1+8;
         
         System.out.println(SignTime1);
         if(aa==24){
   aa=00;
   }
         if(aa>24){
   aa=aa % 24;
   }
         System.out.println(aa);
         String SignTime2 = date1.toLocaleString().substring(13,19);
         System.out.println(SignTime2);
         System.out.println(SignTime+aa+SignTime2);
希望高手能给以指点或者给以新的方法,谢谢

解决方案 »

  1.   

    在你的code基础上修改了下,运行结果:
    Sun Dec 12 01:02:02 CST 2010
    01
    8
    :02:02
    Sun Dec 8:02:02
    源码:
    import java.text.ParseException;
    import java.text.SimpleDateFormat;public class gh { public static void main(String[] args) throws ParseException{
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    java.util.Date date1 = format.parse("2010-12-12 01:02:02");
    String SignTime = date1.toString();
    System.out.println(SignTime);
    String SignTime1 = SignTime.substring(0, 8);
    String SignTime2 = SignTime.substring(11,13);

    int aa=Integer.parseInt(SignTime2)-1+8;
        
    System.out.println(SignTime2);
    if(aa==24){
    aa=00;
    }
      if(aa>24){
    aa=aa % 24;
    }
    System.out.println(aa);
    String SignTime3= SignTime.substring(13,19);
    System.out.println(SignTime3);
    System.out.println(SignTime1+aa+SignTime3);

    }
    }
      

  2.   

    再次修改下,运行结果如下:
    Sun Dec 12 01:02:02 CST 2010
    01
    9
    :02:02
    Sun Dec 12 9:02:02
    import java.text.ParseException;
    import java.text.SimpleDateFormat;public class gh { public static void main(String[] args) throws ParseException{
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    java.util.Date date1 = format.parse("2010-12-12 01:02:02");
    String SignTime = date1.toString();
    System.out.println(SignTime);
    String SignTime1 = SignTime.substring(0, 11);
    String SignTime2 = SignTime.substring(11,13);

    int aa=Integer.parseInt(SignTime2)+8;
        
    System.out.println(SignTime2);
    if(aa==24){
    aa=00;
    }
      if(aa>24){
    aa=aa % 24;
    }
    System.out.println(aa);
    String SignTime3= SignTime.substring(13,19);
    System.out.println(SignTime3);
    System.out.println(SignTime1+aa+SignTime3);

    }
    }
      

  3.   

    java.util.Date date1 = format.parse("2010-12-12 01:02:02");当小时数为个位数时,你的字符串截取就要改啊!
    date1.toLocaleString().substring(11,12);
      

  4.   

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    java.util.Date date = format.parse("2010-12-18 23:02:02");
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.HOUR_OF_DAY,8);
    System.out.println(format.format(cal.getTime()));
      

  5.   

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");java.util.Date date1 = format.parse("2010-12-12 01:02:02");java.util.Date  endDate = new Date(date1.getTime()+ (60*60*1000))String  endStr =  format.format(endDate);
    System.out.println(endStr);日期自动将边界过滤好了!!
      

  6.   

    这问题还不简单啊,你直接取得2010-12-12 01:02:02这个时间的毫秒数,在加上8小时的毫秒数,再转换成日期不就完了吗。
    public static void main(String[] args) throws ParseException {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    java.util.Date date1 = format.parse("2010-12-31 23:22:02");
            System.out.println(format.format(date1));
            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            System.out.println(format1.format(date1.getTime() + 8*60*60*1000));
    }测试结果:
    2010-12-31 11:22:02
    2011-01-01 07:22:02
      

  7.   

    最简单方法   SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Date d=new Date();
    String date = format.parse(d);
    format = new SimpleDateFormat("hh");
    Integer time=Integer.parseInt(format.parse(d));
    format = new SimpleDateFormat("mm:ss");
    String miao=format.parse(d);
    String times=date+time+":"+miao;
      

  8.   

    小时数加8,……
    楼主是 时区问题吧
    最懒惰的方法public static void main(String[] a) throws Exception{
    SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    sim.setTimeZone(TimeZone.getTimeZone("GMT"));
    Date date = sim.parse("2010-12-12 09:02:02");
    System.out.println(sim.format(date));
    sim.setTimeZone(TimeZone.getTimeZone("GMT+8"));
    System.out.println(sim.format(date));
    }通过时区来处理
      

  9.   

    using calendar is better. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    java.util.Date date1 = format.parse("2010-12-12 01:02:02");
    Calendar cal = Calendar.getInstance();
    cal.setTime(date1)l
    cal.add(Calendar.HOUR_OF_DAY, 8);
    String add8_hour = format.format(cal.getTime());