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


     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;
    //采用这种办法,没有对超过期限的做出应有的处理,可能会出现负值

  • 相关阅读:
    上一篇、下一篇之实现思路
    sql优化
    简易的文件上传 tp5
    phpqrcode生成二维码
    php 发送邮件(2)qq邮箱开通
    php 发送邮件(1)代码逻辑
    SELECT list is not in GROUP BY clause and contains nonaggregated
    TP5 未定义变量:XXX
    CentOS 7下载
    FFT算法实现——基于GPU的基2快速傅里叶变换
  • 原文地址:https://www.cnblogs.com/zdcaolei/p/3745793.html
Copyright © 2020-2023  润新知