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();
這個可是沒有去掉毫秒的,所以數據庫就給我們四舍五入了,導致我們數據庫中的時間比代碼中的時間多一秒。
所以為了獲取到准確的時間,我們在使用時間的時候,就需要自己斟酌了。