以前是一直在用datetime類型(db)精度到yyyy-MM-dd HH:mm:ss 或者 date類型 精度到 yyyy-MM-dd 用了框架自動注入功能,本身也沒去深刻沒去管他的set賦值值等等東西。 等到要查詢一些有關於時間線的記錄時,也就利用了數據庫的時間函數來比較得出數據php
可是這段時間沒用框架,原生態的MVC模式,從數據的封裝到業務邏輯的實現 方方面面都要考慮,從php裏的time字段的設計是long型到sql查詢的效率,相對來講都有必定的優點,固然遇到的問題也是基礎、簡單、多而雜。 java
在處理時間格式時出現了一些小問題。1. yyyy-MM-dd HH:mm:ss精度 能夠直接new Date().getTime()---long 2. yyyy-MM-dd 精度 貌似只能利用Calendar日期類來轉成long型的sql
具體轉換方法以下:數據庫
/** * 轉換日期爲compute_time * @param start 獲取時間範圍 0 每日0時0分,1當前時間 ,2每日23時59分 * @param addDate 以當前日期爲基準增減的時間 * @return */ public static long converDateToDBTime(int start,int addDate) { Calendar cal=java.util.Calendar.getInstance(); cal.setTime(new Date()); cal.add(Calendar.DATE,addDate); Date nextDate=cal.getTime(); int y =nextDate.getYear(); int m = nextDate.getMonth(); int n = nextDate.getDate(); long ret =0; switch (start){ case 0: ret = new Date(y,m,n,0,0).getTime()/1000; break; case 1: ret = nextDate.getTime()/1000; break; case 2: ret = new Date(y,m,n,23,59,59).getTime()/1000; break; } return ret; }
附帶DateUtil經常使用操做:框架
package com.nubb.util; /** * Created by IntelliJ IDEA. * User: leo * Date: 2008-10-25 * Time: 15:56:43 * Mascot Leo & featherheanven@gmail.com */ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; import java.util.Calendar; public class DateUtil { private static final TimeZone timeZone = TimeZone.getTimeZone("GMT+08:00"); private static final String format1 = "yyyy-MM-dd HH:mm:ss"; private static final String format2 = "yyyy-MM-dd"; private static final String format3 = "HH:mm"; private static final String format4 = "MM-dd HH:mm"; private static final String format5 = "M月d日"; private static final SimpleDateFormat dateFormat1 = new SimpleDateFormat(format1); private static final SimpleDateFormat dateFormat2 = new SimpleDateFormat(format2); private static final SimpleDateFormat dateFormat3 = new SimpleDateFormat(format3); private static final SimpleDateFormat dateFormat4 = new SimpleDateFormat(format4); private static final SimpleDateFormat dateFormat5 = new SimpleDateFormat(format5); public DateUtil() { } /* * 根據所選的時間格式將String類型的時間轉換爲long類型 * @param String time, int format * @return long */ public static long getTimeStamp(String time, int format) throws ParseException { if (format == 1) { return dateFormat1.parse(time).getTime(); } else if (format == 2) { return dateFormat2.parse(time).getTime(); } else { return dateFormat3.parse(time).getTime(); } } public static long getTimeStamp(String time,int format,long defaulttime) { try{ return getTimeStamp(time,format); }catch(Exception e){ return defaulttime; } } /* * 根據所選的時間格式將long類型的時間轉換爲String類型 數據庫的unixtime*1000 = 系統的timestamp * @param long time, int format * @return String */ public static String getTimeFromDB(long timeStamp, int format) throws ParseException { return getTime(timeStamp*1000,format); } public static String getTime(long timeStamp, int format) throws ParseException { if (format == 1) { return dateFormat1.format(new Date(timeStamp)); } else if (format == 2) { return dateFormat2.format(new Date(timeStamp)); } else if(format == 3) { return dateFormat3.format(new Date(timeStamp)); } else if(format == 4){ return dateFormat4.format(new Date(timeStamp)); } else if(format == 5){ return dateFormat5.format(new Date(timeStamp)); } else { return dateFormat1.format(new Date(timeStamp)); } } /** * 獲取默認時間 * * @return date */ public static Date getDefaultAsDate() { return new Date(0); } /** * J * 獲取默認時間 * * @return long */ public static long getDefaultAsLong() { return 0L; } /** * J * 獲取當前時間 * * @return date */ public static Date getNowAsDate() { return new Date(); } /** * 獲取當前時間 * * @param format 格式 * @param def 默認 * @param def 默認 * @return */ public static String getNowAsString(String format, String def) { return formatDateAsString(new Date(), format, def); } /** * J * 獲取當前時間 * * @return long */ public static long getNowAsLong() { return (new Date()).getTime(); } /** * 將一個字符串的日期描述轉換爲java.util.Date對象 * * @param strDate 字符串的日期描述 * @param format 字符串的日期格式,好比:「yyyy-MM-dd HH:mm」 * @return 字符串轉換的日期對象java.util.Date */ public static Date getDateFromString(String strDate, String format) { if (strDate == null || strDate.trim().equals("")) { return getDefaultAsDate(); } SimpleDateFormat formatter = new SimpleDateFormat(format); // formatter.setTimeZone(timeZone); Date date; try { date = formatter.parse(strDate); } catch (ParseException e) { date = getDefaultAsDate(); } return date; } /** * J * 格式化日期 默認 0000-00-00 * * @param date * @param s * @return 帶默認值的時間格式化字符串 */ public static String formatDateAsString(Date date, String s, String def) { String ret = def; if (date != null && !"".equals(s)) { try { ret = (new SimpleDateFormat(s)).format(date); } catch (Exception e) { ret = def; } } return ret; } /** * V * 傳入秒數,返回如 XX:XX:XX 的一串文字 * * @param second * @return 返回 XX:XX:XX 的文字 */ public static String getTimeAsString(int second) { String ret = ""; int ss = second; int HH = 0; int mm = 0; HH = ss / 60 / 60; if (HH > 0) { ss = ss - (HH * 60 * 60); if (HH >= 10) ret = HH + ":"; else ret = "0" + HH + ":"; } mm = ss / 60; if (mm > 0) { ss = ss - (mm * 60); if (mm >= 10) ret += mm + ":"; else ret += "0" + mm + ":"; } else { ret += "00" + ":"; } if (ss >= 10) ret += ss; else ret += "0" + ss; return ret; } /** * V * 傳入一串時間文字如 XX:XX:XX,返回秒數 * * @param time * @return 返回秒數 */ public static int getStringAsSeord(String time) { int ret = 0; if (time != null && !"".equals(time.trim())) { try { String[] times = time.trim().split(":"); if (times.length == 3) { ret = ret + Integer.parseInt(times[0]) * 60 * 60; // 時 ret = ret + Integer.parseInt(times[1]) * 60; // 分 ret = ret + Integer.parseInt(times[2]); // 秒 } else if (times.length == 2) { ret = ret + Integer.parseInt(times[0]) * 60; // 分 ret = ret + Integer.parseInt(times[1]); // 秒 } else if (times.length == 1) { ret = ret + Integer.parseInt(times[0]); // 秒 } } catch (Exception e) { ret = 0; } } return ret; } /** * 獲得幾天前的時間 * @param d * @param day * @return */ public static Date getDateBefore(Date d,int day){ java.util.Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.DATE,now.get(Calendar.DATE)-day); return now.getTime(); } /** * 獲得幾天後的時間 * @param d * @param day * @return */ public static Date getDateAfter(Date d,int day){ Calendar now =Calendar.getInstance(); now.setTime(d); now.set(Calendar.DATE,now.get(Calendar.DATE)+day); return now.getTime(); } }