说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

时间计算出错!急啊!!!

编辑:说三道四文库 发布时间:2018-02-24 06:25
HTML文档下载 WORD文档下载 PDF文档下载
endTime=rs.getTimestamp(3);//2003-8-10 01:30:00
delayTime=java.sql.Time.valueOf(task.getMachiningDelayTime());//01:00:00

long l=endTime.getTime()+delayTime.getTime();
Date proposeTime=new Date();
proposeTime.setTime(l);

System.out.println(proposeTime.toString());

输出结果:Sat Aug 09 18:30:00 CST 2003

结果预测本该是Sun Aug 10 02:30:00 CST 2003,为何会少了8个小时呢?
是呀,不牵扯到时区呀,怎么出来个8?
UP一个吧。
用java.util.Calendar包
mark
那位能说个详细些啊?还是试不出来
delayTime直接用long类型呢?问题应该出在delayTime身上。
好象和标准时间有关吧
中国是在东8区,转换成格林威治时间了吧
我也遇到过这个问题
import java.util.Calendar;
public class testDate {
    
     public testDate() {
    }
    

    public static void main(String[] args) {
       java.sql.Timestamp endTime= java.sql.Timestamp.valueOf("2003-8-10 01:30:00");
       java.sql.Time delayTime=java.sql.Time.valueOf("01:00:00");//01:00:00
        long delayMillis=delayTime.getHours()*60*60*1000+delayTime.getMinutes()*60*1000+delayTime.getSeconds()*1000;
        long l=endTime.getTime()+delayMillis;
   
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(l);
        System.out.println(calendar.getTime());
    }
    
}
我刚试了一下:
delayTime = java.sql.Time.valueOf("01:00:00");
long delaymills = delayTime.getTime();
结果delaymills的值为-25200000,是-7个小时,所以就会得到2003-8-9 18:30:00
所以构造delayTime时必须注意参数的正确性!
楼上kevincom(木瓜)提出的方法正确,试试吧!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘