如何計(jì)算Java date與Mysql的date類型的時(shí)間間隔?
問題描述
數(shù)據(jù)表里有個(gè)字段存放的是MySQL的date類型,每次讀出的時(shí)候要計(jì)算和當(dāng)前時(shí)間的間隔是多少天,獲取當(dāng)前時(shí)間我比較清楚,但是如何將Mysql中讀出的date數(shù)據(jù)轉(zhuǎn)換格式然后計(jì)算時(shí)間間隔就不太懂了,下面是我按自己的理解寫的代碼,請(qǐng)大家看看是不是對(duì)的。info.get(15)是從數(shù)據(jù)庫中讀出的date數(shù)據(jù)
SimpleDateFormat sdf = new SimpleDateFormat('yyyy-MM-dd');Calendar cal = Calendar.getInstance();String Time1 = sdf.format(new Date());String Time2 = info.get(15).toString;try { cal.setTime(sdf.parse(Time1)); } catch (ParseException e) {e.printStackTrace(); } long oldTime = cal.getTimeInMillis(); try { cal.setTime(sdf.parse(Time2)); } catch (ParseException e) {e.printStackTrace(); }long now1 = cal.getTimeInMillis();long days = (now1 - old) / (1000*3600*24);
問題解答
回答1:最簡(jiǎn)單的做法:
(System.currentTimeMillis() - info.getDate().getTime()) / 86400000
另外,如果碰到時(shí)區(qū)問題,可能會(huì)比較頭疼,最徹底的解決辦法是數(shù)據(jù)庫里所有的日期都存為BIGINT類型,把Date.getTime()(以毫秒為單位的UNIX時(shí)間戳)的值存進(jìn)去。
相關(guān)文章:
1. windows - asp.net連接上mysql之后如何調(diào)用?比如下面的登錄驗(yàn)證功能怎么實(shí)現(xiàn)2. css3 - Typecho 后臺(tái)部分表單按鈕在 Chrome 下出現(xiàn)靈異動(dòng)畫問題,求解決3. javascript - 編程,算法的問題4. 剛放到服務(wù)器的項(xiàng)目出現(xiàn)這中錯(cuò)誤,有高手指點(diǎn)嗎5. mysql - 面試題:如何把login_log表轉(zhuǎn)換成last_login表?6. javascript - 為什么嵌套的Promise不能按預(yù)期捕獲Exception?7. java - HTTPS雙向認(rèn)證基礎(chǔ)上有無必要再進(jìn)行加簽驗(yàn)簽?8. apache - 想把之前寫的單機(jī)版 windows 軟件改成網(wǎng)絡(luò)版,讓每個(gè)用戶可以注冊(cè)并登錄。類似 qq 的登陸,怎么架設(shè)服務(wù)器呢?9. javascript - nodejs實(shí)現(xiàn)異步時(shí)遇到的一個(gè)問題10. java - 阿里的開發(fā)手冊(cè)中為什么禁用map來作為查詢的接受類?
