1. 程式人生 > 實用技巧 >簡單的時間格式轉換工具類(java)

簡單的時間格式轉換工具類(java)

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

/**
 * Date日期公共類
 * 
 * 
 */
public class DateUtils {

    /**
     * 返回當前日期Date型別
     * 
     * @return
*/ public static Date getCurDate() { return new Date(); } /** * Date日期型別轉化為Timestamp型別 如果引數為空返回null * * @param date * @return */ public static Timestamp getTimestamp(Date date) { if (date == null) return null; else {
return new Timestamp(date.getTime()); } } /** * 獲取當前Timestamp型別時間 * * @return */ public static Timestamp getCurTimestamp() { return new Timestamp(new Date().getTime()); } /** * 字串日期轉化為“yyy-MM-dd”格式的Date日期型別 如果字串為null則返回null * *
@param dateStr * @return */ public static Date formateDate(String dateStr) { if (dateStr == null || "".equals(dateStr.trim())) return null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { Date date = sdf.parse(dateStr); return date; } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 字串日期去除兩端空白並返回Timestamp型別日期 如果為null或者“”則返回null * * @param tsStr * @return */ public static Timestamp formateTimeStamp(String tsStr) { if (tsStr == null || "".equals(tsStr.trim())) return null; try { Timestamp ts = Timestamp.valueOf(tsStr.trim()); return ts; } catch (Exception e) { e.printStackTrace(); } return null; } /** * Date日期型別轉化為“yyyy-MM-dd”格式的字串日期 如果為空則返回null * * @param date * @return */ public static String getDateStr(Date date) { if (date == null) return null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = sdf.format(date); return dateStr; } public static String getTime2Str(Date date){ if (date == null) return null; SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); String dateStr = sdf.format(date); return dateStr; } /** * Timestamp日期型別轉化為“yyyy-MM-dd HH:mm:ss”格式的字串日期 如果為空則返回null * * @param ts * @return */ public static String getTimestampStr(Timestamp ts) { if (ts == null) return null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String tsStr = sdf.format(ts); return tsStr; } /** * Timestamp日期型別轉化為“MM-dd HH:mm”格式的字串日期 如果為空則返回null * * @param ts * @return */ public static String formatTimestamp2Str(Timestamp ts) { if (ts == null) return null; SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm"); String tsStr = sdf.format(ts); return tsStr; } /** * Date日期型別轉化為“MM-dd HH:mm”格式的字串日期 如果為空則返回null * * @param ts * @return */ public static String formatTimestamp2Str(Date ts) { if (ts == null) return null; SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm"); String tsStr = sdf.format(ts); return tsStr; } /** * Date日期型別轉化為“yyyy-MM-dd HH:mm:ss”格式的字串日期 如果為空則返回null * * @param date * @return */ public static String getTimestampStr(Date date) { if (date == null) return null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String tsStr = sdf.format(date); return tsStr; } /** * 返回Date日期型別的起始時間,返回型別是Timestamp幷包含秒錶 2014-01-21 00:00:00.0 * * @param date * @return */ public static Timestamp getStartTimestampByDate(Date date) { if (date == null) return null; Calendar c1 = Calendar.getInstance(); c1.setTime(date); c1.set(Calendar.HOUR_OF_DAY, 0); c1.set(Calendar.MINUTE, 0); c1.set(Calendar.SECOND, 0); c1.set(Calendar.MILLISECOND, 0); return new Timestamp(c1.getTimeInMillis()); } /** * 返回Date日期型別的結束時間,返回型別是Timestamp幷包含秒錶 2014-01-21 23:59:59.999 * * @param date * @return */ public static Timestamp getEndTimestampByDate(Date date) { if (date == null) return null; Calendar c1 = Calendar.getInstance(); c1.setTime(date); c1.set(Calendar.HOUR_OF_DAY, 23); c1.set(Calendar.MINUTE, 59); c1.set(Calendar.SECOND, 59); c1.set(Calendar.MILLISECOND, 999); return new Timestamp(c1.getTimeInMillis()); } /** * 日期增加 並返回Date日期型別 * * @param curDate * @param count * @return */ public static Date dateAdd(Date curDate, Integer count) { if (curDate == null || count == null) return null; return new Date(curDate.getTime() + count * 24 * 60 * 60 * 1000L); } /** * 日期增加 並返回Timestamp日期型別 * * @param curTimestamp * @param count * @return */ public static Timestamp timeAddSecond(Timestamp curTimestamp, Integer count) { if (curTimestamp == null || count == null) return null; return new Timestamp(curTimestamp.getTime() + count * 1000); } /** * 兩個日期相差幾個月 * * @param curDate * @param oldDate * @return */ public static int dateDiffMont(Date curDate, Date oldDate) { if (curDate == null || oldDate == null) return 0; if (oldDate.getTime() >= curDate.getTime()) { return 0; } Calendar c = Calendar.getInstance(); c.setTime(curDate); int curYear = c.get(Calendar.YEAR); int curMonth = c.get(Calendar.MONTH); c.setTime(oldDate); int oldYear = c.get(Calendar.YEAR); int oldMonth = c.get(Calendar.MONTH); int result; if (curYear == oldYear) { result = curMonth - oldMonth;// 兩個日期相差幾個月,即月份差 } else { result = 12 * (curYear - oldYear) + curMonth - oldMonth;// 兩個日期相差幾個月,即月份差 } return result; } /** * 判斷兩個日期的大小 是返回true 否則返回false * * @param date1 * @param date2 * @return */ public static boolean compare(Date date1, Date date2) { if (date1 == null || date2 == null) return false; Calendar c1 = Calendar.getInstance(); c1.setTime(date1); c1.set(Calendar.HOUR_OF_DAY, 0); c1.set(Calendar.MINUTE, 0); c1.set(Calendar.SECOND, 0); c1.set(Calendar.MILLISECOND, 0); Calendar c2 = Calendar.getInstance(); c2.setTime(date2); c2.set(Calendar.HOUR_OF_DAY, 0); c2.set(Calendar.MINUTE, 0); c2.set(Calendar.SECOND, 0); c2.set(Calendar.MILLISECOND, 0); if (c1.getTimeInMillis() >= c2.getTimeInMillis()) return true; else return false; } /** * 返回當前日期當前月的第一天 返回型別是Timestamp 格式是“2014-01-01 00:00:00.0” * * @param curDate * @return */ public static Timestamp getFirstDayOfMonth(Date curDate) { if (curDate == null) return null; Calendar c = Calendar.getInstance(); c.setTime(curDate); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); c.set(Calendar.DATE, 1);// 設為當前月的1號 System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回當前日期下個月的第一天 返回型別是Timestamp 格式是“2014-02-01 00:00:00.0” * * @param curDate * @return */ public static Timestamp getFirstDayOfNextMonth(Date curDate) { if (curDate == null) return null; Calendar c = Calendar.getInstance(); c.setTime(curDate); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); c.set(Calendar.DATE, 1);// 設為當前月的1號 c.add(Calendar.MONTH, 1);// System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回指定年份的第一天 返回型別是Timestamp 格式是“2013-01-01 00:00:00.0” * * @param yearStr * ("引數格式:2013") * @return */ public static Timestamp getFirstDayOfYear(String yearStr) { if (yearStr == null) return null; Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, new Integer(yearStr)); c.set(Calendar.MONTH, 0); // c.set(Calendar.DATE, 1); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回指定年份的最後一天 返回型別是Timestamp 格式是“2013-12-31 23:59:59.999” * * @param yearStr * ("引數格式:2013") * @return */ public static Timestamp getLastDayOfYear(String yearStr) { if (yearStr == null) return null; Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, new Integer(yearStr)); c.set(Calendar.MONTH, 11); // c.set(Calendar.DATE, 31); c.set(Calendar.HOUR_OF_DAY, 23); c.set(Calendar.MINUTE, 59); c.set(Calendar.SECOND, 59); c.set(Calendar.MILLISECOND, 999); System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回本季度的第一天 返回型別是Timestamp 格式是“2013-10-01 00:00:00.0” * * @param yearStr * (例如引數:2013) * @param qurStr * (例如第XX季度:4) * @return */ public static Timestamp getFirstDayOfQuarter(String yearStr, String qurStr) { if (yearStr == null) return null; if (qurStr == null) return null; String qurTmp = ""; if ("1".equals(qurStr)) qurTmp = "0"; else if ("2".equals(qurStr)) qurTmp = "3"; else if ("3".equals(qurStr)) qurTmp = "6"; else if ("4".equals(qurStr)) qurTmp = "9"; Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, new Integer(yearStr)); c.set(Calendar.MONTH, new Integer(qurTmp)); // c.set(Calendar.DATE, 1); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回指定年、月份的第一天 返回型別是Timestamp 格式是“2013-04-01 00:00:00.0” * * @param yearStr * (例如引數:2013) * @param monthStr * (例如引數:4) * @return */ public static Timestamp getFirstDayOfMonth(String yearStr, String monthStr) { if (yearStr == null) return null; if (monthStr == null) return null; Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, new Integer(yearStr)); c.set(Calendar.MONTH, new Integer(monthStr) - 1); // c.set(Calendar.DATE, 1); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回當前日期的上個月的當前時間段 返回型別Timestamp 格式:”2013-12-21 12:15:45.096“ * * @param endTime * (例如引數:2014-01-21) * @return */ public static Timestamp getFirstDayOfPreMonth(Timestamp endTime) { Calendar c = Calendar.getInstance(); c.setTime(new Date(endTime.getTime())); System.out.println(c.getTime()); int y = c.get(Calendar.YEAR); int m = c.get(Calendar.MONTH) - 1; System.out.println(y); System.out.println(m); if (m == -1) { y = y - 1; m = 11; } c.set(Calendar.YEAR, y); c.set(Calendar.MONTH, m); return new Timestamp(c.getTimeInMillis()); } /** * 返回上一年的第一個月的第一天 返回型別Timestamp 格式:2013-01-01 00:00:00.0 * * @param curDate * @return */ public static Timestamp getPrevYearFirstDayOfMonth(Date curDate) { if (curDate == null) return null; Calendar c = Calendar.getInstance(); c.setTime(curDate); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); c.set(Calendar.DATE, 1);// 設為當前月的1號 c.add(Calendar.YEAR, -1);// System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回上一年的第二個月的第一天 返回型別Timestamp 格式:2013-02-01 00:00:00.0 * * @param curDate * @return */ public static Timestamp getPrevYearFirstDayOfNextMonth(Date curDate) { if (curDate == null) return null; Calendar c = Calendar.getInstance(); c.setTime(curDate); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); c.set(Calendar.DATE, 1);// 設為當前月的1號 c.add(Calendar.MONTH, 1);// c.add(Calendar.YEAR, -1);// System.out.println(new Timestamp(c.getTimeInMillis())); return new Timestamp(c.getTimeInMillis()); } /** * 返回字串日期 返回型別:string 引數型別:Timestamp 返回格式:yyyy.MM * * @param tmp * @return */ public static String cvtTimestampToStr(Timestamp tmp) { if (tmp == null) return ""; SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM"); String timeStr = sdf.format(new Date(tmp.getTime())); System.out.println(timeStr); return timeStr; } /** * 返回字串日期 返回型別:string 引數型別:Date 返回格式:yyyy.MM * * @param tmp * @return */ public static String cvtDateToStr(Date tmp) { if (tmp == null) return ""; SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM"); String timeStr = sdf.format(tmp); System.out.println(timeStr); return timeStr; } /** * 返回兩個日期相差多少秒 返回型別Integer 引數型別:Timestamp * * @param startTime * @param endTime * @return */ public static Integer diffTimestamp4Second(Timestamp startTime, Timestamp endTime) { if (startTime == null || endTime == null) return 0; Integer diff = new Long( (endTime.getTime() - startTime.getTime()) / 1000).intValue(); return diff; } /** * 獲取當前時間格式為yyyy-MM-dd HH:mm:ss的字串 * @return */ public static String getCurrentYYYYMMDDHHMMSS() { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date currTime = new Date(); String thisTime = new String(formatter.format(currTime)); return thisTime; } /** * 獲取當前時間格式為yyyy-MM-dd HH:mm:ss的字串 * @param inputDate * @return */ public static String getYYYYMMDDHHMMSS(Date inputDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); String thisTime = new String(formatter.format(inputDate)); return thisTime; } /** * 獲取當前時間格式為yyyy-MM-ddHHmmssSSS的字串 * @return */ public static String getCurrentYYYYMMDDHHMMssSSS() { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-ddHHmmssSSS", Locale.US); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date currTime = new Date(); String thisTime = new String(formatter.format(currTime)); return thisTime; } /** * 獲取當前時間格式為yyyyMMddHHmmssSSS的字串 * @return */ public static String getCurrentYYYYMMDDHHMMssSSSFormat() { SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSS", Locale.US); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date currTime = new Date(); String thisTime = new String(formatter.format(currTime)); return thisTime; } /** * 獲取當前時間格式為yyyyMMddHHmmssSSS的字串 * @return */ public static String getCurrentYYYYMMDDFormat() { SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd", Locale.US); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date currTime = new Date(); String thisTime = new String(formatter.format(currTime)); return thisTime; } /** * 獲取當前時間格式為yyyy-MM-dd的字串 * @return */ public static String getCurrentYYYYMMDD() { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", Locale.US); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date currTime = new Date(); String thisTime = new String(formatter.format(currTime)); return thisTime; } /** * 獲取當前時間格式為yyyyMMddHHmmss的字串 * @return */ public static String getCurrent_yyyyMMddHHmmss() { SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss", Locale.US); formatter.setTimeZone(TimeZone.getTimeZone("GMT+8")); Date currTime = new Date(); String thisTime = new String(formatter.format(currTime)); return thisTime; } /** * yyyyMMddHHmmss轉換為yyyy-MM-dd HH:mm:ss 的字串 */ public static String getyMdHms(String str){ StringBuffer sb =new StringBuffer(); String s = str.trim(); if(!s.isEmpty()){ if(s.length()>3){ sb.append(s.substring(0, 4)); } if(s.length()>5){ sb.append("-"); sb.append(s.substring(4, 6)); } if(s.length()>7){ sb.append("-"); sb.append(s.substring(6, 8)); } if(s.length()>9){ sb.append(" "); sb.append(s.substring(8, 10)); } if(s.length()>11){ sb.append(":"); sb.append(s.substring(10, 12)); } if(s.length()>13){ sb.append(":"); sb.append(s.substring(12, 14)); } } return sb.toString(); } }