当前位置: 技术问答>java相关
◎◎ --为什么时间值会倒退?是因为long型溢出了吗?
来源: 互联网 发布时间:2015-02-14
本文导语: 下面这个程序:用java.sql.Timestamp计算当前日期时间增加 x 小时后的日期时间值。 但是当x达到一定值后,时间居然往后倒退了,应该是因为相加时发生溢出了吗? //** test.java import java.sql.*; import java.text.*; class test{...
下面这个程序:用java.sql.Timestamp计算当前日期时间增加 x 小时后的日期时间值。
但是当x达到一定值后,时间居然往后倒退了,应该是因为相加时发生溢出了吗?
//** test.java
import java.sql.*;
import java.text.*;
class test{
public static void main(String[]args) {
String str1="2001-10-25 23:10:00";
int add_hours = 1000; //小时 ***修改这个值到一定程度,日期就往后退了
System.out.println(str1);
try{
long dt = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).parse(str1).getTime();
Timestamp d1 = new Timestamp(dt);
System.out.println("原始时间 =="+d1);
Timestamp d2 = new Timestamp(dt+add_hours*60*60*1000); //就是这一行发生相加运算
System.out.println("增加x小时后="+d2);
}
catch(Exception e) {}
}
}
但是当x达到一定值后,时间居然往后倒退了,应该是因为相加时发生溢出了吗?
//** test.java
import java.sql.*;
import java.text.*;
class test{
public static void main(String[]args) {
String str1="2001-10-25 23:10:00";
int add_hours = 1000; //小时 ***修改这个值到一定程度,日期就往后退了
System.out.println(str1);
try{
long dt = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).parse(str1).getTime();
Timestamp d1 = new Timestamp(dt);
System.out.println("原始时间 =="+d1);
Timestamp d2 = new Timestamp(dt+add_hours*60*60*1000); //就是这一行发生相加运算
System.out.println("增加x小时后="+d2);
}
catch(Exception e) {}
}
}
|
我的意思是new Timestamp(dt+add_hours*60*60*1000)这一步中,add_hours*60*60*1000返回的类型仍然是int,但是它溢出了,你可以运行一下:
int i2=1000;
System.out.println("the i2 is"+add_hours*60*60*1000);
是个负值
int i2=1000;
System.out.println("the i2 is"+add_hours*60*60*1000);
是个负值
|
setTime(new Date(dt));
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。