| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
9年前发布

Java时间工具类

import java.sql.Timestamp;  import java.text.ParseException;  import java.text.ParsePosition;  import java.text.SimpleDateFormat;  import java.util.Calendar;  import java.util.Date;  import java.util.GregorianCalendar;    public class TimestampTool {      /**     * 将毫秒转成时间     */    public static String getTimeMillisToDate(long l) {      Timestamp d = new Timestamp(l);      return d.toString().substring(0, 19);    }      /**     * 当前时间     *      * @return Timestamp     */    public static Timestamp crunttime() {      return new Timestamp(System.currentTimeMillis());    }      /**     * 获取当前时间的字符串     *      * @return String ex:2006-07-07     */    public static String getCurrentDate() {      Timestamp d = crunttime();      return d.toString().substring(0, 10);    }      /**     * 获取当前时间的字符串     *      * @return String ex:2006-07-07 22:10:10     */    public static String getCurrentDateTime() {      Timestamp d = crunttime();      return d.toString().substring(0, 19);    }      public static String getWeekDay() {      Calendar date = Calendar.getInstance();      date.setTime(crunttime());      return new SimpleDateFormat("EEEE").format(date.getTime());    }      /**     * 获取指定时间的字符串,只到日期     *      * @param t     *            Timestamp     * @return String ex:2006-07-07     */    public static String getStrDate(Timestamp t) {      return t.toString().substring(0, 10);    }      /**     * 获取指定时间的字符串     *      * @param t     *            Timestamp     * @return String ex:2006-07-07 22:10:10     */    public static String getStrDateTime(Timestamp t) {      return t.toString().substring(0, 19);    }      /**     * 获得当前日期的前段日期     *      * @param days     * @return String     */    public static String getStrIntervalDate(String days) {      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");      Calendar cal = Calendar.getInstance();      cal.add(Calendar.DATE, -Integer.parseInt(days));      String strBeforeDays = sdf.format(cal.getTime());      return strBeforeDays;    }      /**     * 格式化时间     *      * @param dt     *            String -> yyyy-MM-dd hh:mm:ss     * @return java.util.Date.Date -> yyyy-MM-dd hh:mm:ss     */    public static Date parseDateTime(String dt) {      Date jDt = new Date();      try {        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        if (dt.length() > 10) {          jDt = sdf.parse(dt);        }      } catch (Exception ex) {        ex.printStackTrace();      }      return jDt;    }      /**     * 格式化时间yyyy-MM-dd HH:mm:ss     *      * @param date     *            java.util.Date     * @return String -> yyyy-MM-dd HH:mm:ss     */    public static String parseDateTime(Date date) {      String s = null;      if (date != null) {        try {          SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");          s = f.format(date);        } catch (Exception e) {          e.printStackTrace();        }      }      return s;    }      /**     * 格式化日期     *      * @param dt     *            String -> yyyy-MM-dd     * @return java.util.Date.Date -> yyyy-MM-dd     */    public static Date parseDate(String dt) {      Date jDt = new Date();      try {        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");        if (dt.length() >= 8) {          jDt = sdf.parse(dt);        }      } catch (Exception ex) {        ex.printStackTrace();      }      return jDt;    }      /**     * 格式化时间yyyy-MM-dd     *      * @param date     *            java.util.Date     * @return String -> yyyy-MM-dd     */    public static String parseDate(Date date) {      String s = null;      try {        if (date != null) {          SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");          s = f.format(date);        }      } catch (Exception e) {        e.printStackTrace();      }      return s;    }      /**     *      * @param dt     * @return String     */    public static String getLongDateFromShortDate(String dt) {      String strDT = dt;      try {        if (strDT != null && strDT.length() <= 10) {          strDT = dt.trim() + " 00:00:00";        }      } catch (Exception ex) {        ex.printStackTrace();      }      return strDT;    }      /**     *      * @param dt     * @return String     */    public static String getShortDateToHHMM(String dt) {      String jDt = dt;      try {        if (jDt != null && jDt.length() <= 10) {          jDt = jDt + " 00:00";        }        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");        jDt = sdf.parse(jDt).toLocaleString();      } catch (Exception ex) {        ex.printStackTrace();      }      return jDt;    }      /**     *      * @param dateStr     * @return String     */    public static String formatDateToHHMM(String dateStr) {      String resultDate = null;      try {        if (dateStr.length() > 10) {          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:ss");          Date date = sdf.parse(dateStr);          resultDate = sdf.format(date);        } else          resultDate = dateStr;      } catch (ParseException e) {        e.printStackTrace();      }      return resultDate;    }      /**     * 返回日期 格式:2006-07-05     *      * @param str     * @return Timestamp     */    public static Timestamp date(String str) {      Timestamp tp = null;      if (str.length() <= 10) {        String[] string = str.trim().split("-");        int one = Integer.parseInt(string[0]) - 1900;        int two = Integer.parseInt(string[1]) - 1;        int three = Integer.parseInt(string[2]);        tp = new Timestamp(one, two, three, 0, 0, 0, 0);      }      return tp;    }      // 获取指定日期之后的日期字符串 如 2007-04-15 后一天 就是 2007-04-16    public static String getNextDay(String strDate, int day) {      if (strDate != null && !strDate.equals("")) {        Calendar cal1 = Calendar.getInstance();        String[] string = strDate.trim().split("-");        int one = Integer.parseInt(string[0]) - 1900;        int two = Integer.parseInt(string[1]) - 1;        int three = Integer.parseInt(string[2]);        cal1.setTime(new Date(one, two, three));        cal1.add(Calendar.DAY_OF_MONTH, day);        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");        return formatter.format(cal1.getTime());      } else {        return null;      }    }      // 获取指定日期之后的日期字符串 如 2007-02-28 后一年 就是 2008-02-29 (含闰年)    public static String getNextYear(String strDate, int year) {      Calendar cal1 = Calendar.getInstance();      String[] string = strDate.trim().split("-");      int one = Integer.parseInt(string[0]) - 1900;      int two = Integer.parseInt(string[1]) - 1;      int three = Integer.parseInt(string[2]);      cal1.setTime(new Date(one, two, three));      cal1.add(Calendar.YEAR, year);      SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");      return formatter.format(cal1.getTime());    }      /**     * 返回时间和日期 格式:2006-07-05 22:10:10     *      * @param str     * @return Timestamp     */    public static Timestamp datetime(String str) {      Timestamp tp = null;      if (str != null && str.length() > 10) {        String[] string = str.trim().split(" ");        String[] date = string[0].split("-");        String[] time = string[1].split(":");        int date1 = Integer.parseInt(date[0]) - 1900;        int date2 = Integer.parseInt(date[1]) - 1;        int date3 = Integer.parseInt(date[2]);        int time1 = Integer.parseInt(time[0]);        int time2 = Integer.parseInt(time[1]);        int time3 = Integer.parseInt(time[2]);        tp = new Timestamp(date1, date2, date3, time1, time2, time3, 0);      }      return tp;    }      /**     * 返回日期和时间(没有秒) 格式:2006-07-05 22:10     *      * @param str     * @return Timestamp     */    public static Timestamp datetimeHm(String str) {      Timestamp tp = null;      if (str.length() > 10) {        String[] string = str.trim().split(" ");        String[] date = string[0].split("-");        String[] time = string[1].split(":");        int date1 = Integer.parseInt(date[0]) - 1900;        int date2 = Integer.parseInt(date[1]) - 1;        int date3 = Integer.parseInt(date[2]);        int time1 = Integer.parseInt(time[0]);        int time2 = Integer.parseInt(time[1]);        tp = new Timestamp(date1, date2, date3, time1, time2, 0, 0);      }      return tp;    }      /**     * 获得当前系统日期与本周一相差的天数     *      * @return int     */    private static int getMondayPlus() {      Calendar calendar = Calendar.getInstance();      // 获得今天是一周的第几天,正常顺序是星期日是第一天,星期一是第二天......      int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); // 星期日是第一天      return (dayOfWeek == 1) ? -6 : 2 - dayOfWeek;    }      /**     * 获得距当前时间所在某星期的周一的日期 例: 0-本周周一日期 -1-上周周一日期 1-下周周一日期     *      * @param week     *            int     * @return java.util.Date     */    public static Date getMondayOfWeek(int week) {      int mondayPlus = getMondayPlus(); // 相距周一的天数差      GregorianCalendar current = new GregorianCalendar();      current.add(GregorianCalendar.DATE, mondayPlus + 7 * week);      return current.getTime();    }      /**     * 获得某日前后的某一天     *      * @param date     *            java.util.Date     * @param day     *            int     * @return java.util.Date     */    public static Date getDay(Date date, int day) {      GregorianCalendar c = new GregorianCalendar();      c.setTime(date);      c.add(GregorianCalendar.DATE, day);      return c.getTime();    }      /**     * 获得距当前周的前后某一周的日期     *      * @param week     *            int     * @return String[]     */    public static String[] getDaysOfWeek(int week) {      String[] days = new String[7];      Date monday = getMondayOfWeek(week); // 获得距本周前或后的某周周一      Timestamp t = new Timestamp(monday.getTime());      days[0] = getStrDate(t);      for (int i = 1; i < 7; i++) {        t = new Timestamp(getDay(monday, i).getTime());        days[i] = getStrDate(t);      }      return days;    }      /***     * MCC的UTC时间转换,MCC的UTC不是到毫秒的     *      * @param utc     * @return java.util.Date     */    public static Date mccUTC2Date(long utc) {      Date d = new Date();      d.setTime(utc * 1000); // 转成毫秒      return d;    }      // 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss    public static Date strToDateLong(String strDate) {      SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");      ParsePosition pos = new ParsePosition(0);      Date strtodate = (Date) formatter.parse(strDate, pos);      if (strtodate == null) {        formatter = new SimpleDateFormat("yyyy-MM-dd");        strtodate = (Date) formatter.parse(strDate, pos);      }      return strtodate;    }      // 将 yyyy-MM-dd HH:mm 格式字符串转换为时间    public static Date strToDateTime(String strDate) {      SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");      ParsePosition pos = new ParsePosition(0);      Date strtodate = (Date) formatter.parse(strDate, pos);      if (strtodate == null) {        formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        strtodate = (Date) formatter.parse(strDate, pos);      }      return strtodate;    }      // 根据输入的字符串返回日期字符串 2006-07-07 22:10 2006-07-07    public static String getStrDate(String str) {      if (str.length() > 10) {        String[] string = str.trim().split(" ");        return string[0];      } else {        return getCurrentDate();      }    }      // 获取当前时间的字符串 2006-07-07 22:10:10 2006-07-07_221010    public static String getStrDateTime() {      Timestamp d = crunttime();      return d.toString().substring(0, 19).replace(":", "").replace(" ", "_");    }      // 根据日期字符串,返回今天,昨天或日期    public static String getDayOrDate(String str) {      if (str != null && !str.equals("")) {        if (getNextDay(str, 0).equals(getCurrentDate())) {          str = "今天";        } else if (getNextDay(str, 1).equals(getCurrentDate())) {          str = "昨天";        }      }      return str;    }      // 返回当前日期所在星期,2对应星期一    public static int getMonOfWeek() {      Calendar cal1 = Calendar.getInstance();      cal1.setTime(new Date());      return cal1.get(Calendar.DAY_OF_WEEK);    }      public static void main(String[] args) {      System.out.println(System.currentTimeMillis());    }      /**     * 获取当前日期之前的日期字符串 如 2007-04-15 前5月 就是 2006-11-15     */    public static String getPreviousMonth(int month) {      Calendar cal1 = Calendar.getInstance();      cal1.setTime(new Date());      cal1.add(Calendar.MONTH, -month);      SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");      return formatter.format(cal1.getTime());      }      public static String getStrYear(int year) {      Calendar cal1 = Calendar.getInstance();      cal1.setTime(new Date());      cal1.add(Calendar.YEAR, -year);      SimpleDateFormat formatter = new SimpleDateFormat("yyyy");      return formatter.format(cal1.getTime()) + "年份";    }      /**     * 比较两个日期前后 可以大于或等于     *      * @param starDate     * @param endDate     * @return     */    public static boolean compareTwoDays(String starDate, String endDate) {      Calendar cal_start = Calendar.getInstance();      Calendar cal_end = Calendar.getInstance();      cal_start.setTime(parseDate(starDate));      cal_end.setTime(parseDate(endDate));      return cal_end.after(cal_start);    }      public static int getDaysBetween(java.util.Calendar d1,        java.util.Calendar d2) {      if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end        java.util.Calendar swap = d1;        d1 = d2;        d2 = swap;      }      int days = d2.get(java.util.Calendar.DAY_OF_YEAR)          - d1.get(java.util.Calendar.DAY_OF_YEAR);      int y2 = d2.get(java.util.Calendar.YEAR);      if (d1.get(java.util.Calendar.YEAR) != y2) {        d1 = (java.util.Calendar) d1.clone();        do {          days += d1.getActualMaximum(java.util.Calendar.DAY_OF_YEAR);          d1.add(java.util.Calendar.YEAR, 1);        } while (d1.get(java.util.Calendar.YEAR) != y2);      }      return days;    }      // 得到两个日期之间的年    public static int dateDiffYear(String starDate, String endDate) {      int result = 0;      Calendar d1 = Calendar.getInstance();      Calendar d2 = Calendar.getInstance();      d1.setTime(parseDate(starDate));      d2.setTime(parseDate(endDate));        // 日期大小翻转      if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end        java.util.Calendar swap = d1;        d1 = d2;        d2 = swap;      }      int yy = d2.get(Calendar.YEAR) - d1.get(Calendar.YEAR);      int mm = d2.get(Calendar.MONTH) - d1.get(Calendar.MONTH);      if (mm < 0) {        result = yy - 1;      }      if (mm > 0) {        result = yy;      }      if (mm == 0) {        if ((d2.getTimeInMillis() - d1.getTimeInMillis()) >= 0) {          result = yy;        } else {          result = yy - 1;        }      }      return result;    }      // 获取年龄    public static int getAgeByBirth(String starDate) {      return dateDiffYear(starDate, getCurrentDate());    }  }