分享按钮

也经常用到日期和时间,总是出错,记录一下。

 JAVA,也经常用到时间,总是出错,记录一下:


例如说,以这样的形式从数据库那边拿到了消息:
/*
* Get System Date/Time
*/
pstmt = connection
.prepareStatement("SELECT TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI:SS') FROM DUAL");
ResultSet rset1 = pstmt.executeQuery();

String datetime = "";
if (rset1.next()) {
datetime = rset1.getString(1);
}
if (pstmt != null)
pstmt.close();
if (rset1 != null)
rset1.close();

datetime 是这个形式的----》2014-05-22 15:39:20


SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar FaultCalendar = null;
FaultCalendar=FaultCalendar.getInstance();
FaultCalendar.setTime(FalutDate);


Calendar nowCalendar=null;
nowCalendar=nowCalendar.getInstance();
System.out.println(datetime);
-------------------------------------------------------------------------------------------
由于datetime 是这个形式的----》2014-05-22 15:39:20
转换的话必须使用这种形式转换,否则转换不了,会出错

Date dt=sdf1.parse(datetime);
nowCalendar.setTime(dt);

// 采用这种形式绝对错误: Date dt=new Date(datetime); 报错为:java.lang.IllegalArgumentException
-------------------------------------------------------------------------------------------
//getTimeInMillis() 这个函数可以计算当前时间到一个固定时间点(from the epoch)的毫秒个数

long nowMillistTime=nowCalendar.getTimeInMillis();
long FaultMillisTime=FaultCalendar.getTimeInMillis();
long betweenMillistTime=nowMillistTime-FaultMillisTime;

betweenDay就是得出两个时间点之间相差的天数。

int betweenDay=0;
if(betweenMillistTime<0) betweenDay=0;
else {
betweenDay=(int) (betweenMillistTime/(1000*3600*24));
}
int finalDay=PmMaxDuration-betweenDay-1;
//采用这种办法,没有对超过期限的做出应有的处理,可能会出现负值

posted @ 2014-05-22 15:47  草莓在努力  阅读(368)  评论(0编辑  收藏  举报