java代碼中和mysql數據庫中時間相差1秒問題?


mysql數據庫的時間總是比代碼中的時間多一秒。
  @org.junit.Test
    public void ttt() throws InterruptedException
    {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");

        for (int i = 0; i < 10; i++)
        {
            Thread.sleep(100);
            final Date date0 = new Date();
            Date date1 = DateUtils.round(date0, Calendar.SECOND);
            Date date2 = DateUtils.ceiling(date0, Calendar.SECOND);
         Date date3 = DateUtils.truncate(date0, Calendar.SECOND);
            final Timestamp timestamp = Timestamp.valueOf(
                    new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.SIMPLIFIED_CHINESE).format(date0) );
            System.out.println("new Date() =============================================>"+ date0 + "  " + df.format(date0));
            System.out.println(" org.apache.commons:commons-lang3:3.8.1 .DateUtils.round " + date1+ "  " + df.format(date1));
            System.out.println(" org.apache.commons:commons-lang3:3.8.1 .DateUtils.ceiling " + date2+ "  " + df.format(date2));
           System.out.println(" org.apache.commons:commons-lang3:3.8.1 .DateUtils.truncate " + date3+ "  " + df.format(date3)); //舍去毫秒
            System.out.println("timestamp==================================================>"+timestamp+ "  " + df.format(timestamp));//舍去毫秒
        }
    }

可以更具上邊代碼自己測試,查看結果。

思路:時間如果毫秒多余500,存到mysql總是會多出一秒的時間。所以這個我們在代碼中用到時間的時候。

時間格式化
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
這樣子拿到的時間就是去掉了毫秒的數據值,但是存到mysql中的時間是
 Date date0 = new Date();
這個可是沒有去掉毫秒的,所以數據庫就給我們四舍五入了,導致我們數據庫中的時間比代碼中的時間多一秒。

所以為了獲取到准確的時間,我們在使用時間的時候,就需要自己斟酌了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM