1. 程式人生 > >MySQL的date資料型別轉換問題及兩個時間戳時間間隔的時間

MySQL的date資料型別轉換問題及兩個時間戳時間間隔的時間

由於更換資料庫的原因,MySQL遇到了各種坑。

在MySQL資料庫裡建表表欄位為COLLECT_TIME     TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

實際上該欄位是date。很奇怪,

然後在java裡面獲取該欄位值居然是英文的時間戳格式: Wed Oct 17 21:34:52 CST 2018

【1】自己寫了一個英文格式時間戳轉換為中文時間戳的方法:

public static String getTimeEIntoC(Date date) {         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");         return dateFormat.format(date);     }

【2】計算兩個時間戳之間間隔的毫秒數

public static long getTimeMillisInterval(String beginTime, String endTime) {         long interval = 0;         long beginMillis = 0;         long endMillis = 0;         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");         try {             beginMillis = simpleDateFormat.parse(beginTime).getTime();             endMillis = simpleDateFormat.parse(endTime).getTime();         } catch (Exception e) {             // TODO Auto-generated catch block             e.printStackTrace();         }         if (endMillis > beginMillis) {             interval = endMillis - beginMillis;         }         return interval;     }

【3】計算兩個時間戳之間間隔的年,月,日,時,分,秒(注意java相乘的溢位問題)

public static String getTimeInterval(String beginTime, String endTime) {         String interval = "";         long intervalMillis = getTimeMillisInterval(beginTime, endTime);         if (intervalMillis > 365 * 24 * 60 * 60 * 1000L) { // 年             interval = (intervalMillis / (365 * 24 * 60 * 60 * 1000L)) + "年前";         } else if (intervalMillis > 30 * 24 * 60 * 60 * 1000L) { // 月             interval = (intervalMillis / (30 * 24 * 60 * 60 * 1000L)) + "月前";         } else if (intervalMillis > 24 * 60 * 60 * 1000L) { // 日             interval = (intervalMillis / (24 * 60 * 60 * 1000L)) + "天前";         } else if (intervalMillis > 60 * 60 * 1000L) { // 時             interval = (intervalMillis / (60 * 60 * 1000L)) + "小時前";         } else if (intervalMillis > 60 * 100L) { // 分             interval = (intervalMillis / (60 * 1000L)) + "分前";         } else { // 秒             interval = intervalMillis / 1000 + "秒前";         }         return interval;     }

eg:log.info(getTimeInterval("2018-10-10 14:53:23", OptionUtil.getCurrentTime()));

由於是自己練手的專案,資料庫更換之後

對MySQL不太熟悉,及java時間的處理不太熟練。先這樣處理著吧。有更好的方法再去更改。