Java时间工具类

jopen 10年前

public class TimeUtil {   /**    * 日期字符串转换 pattern可以从R.string中获取,datetime_pattern_yyyymmddhhmmss,    * datetime_pattern_yyyy_mm_dd_hhmmss,    * date_pattern_chinese,datetime_pattern_chinese等    *     * @param originalPattern    *            初始日期格式    * @param targetPattern    *            目标日期格式    * @param datetime    *            日期字符串    * @return    */   public static String formatDateTime(Context context, int originalPatternStrId, int targetPatternStrId, String datetime) {    SimpleDateFormat sdf = new SimpleDateFormat(context.getString(originalPatternStrId), Locale.getDefault());    Date date = null;    try {     date = sdf.parse(datetime);    } catch (ParseException e) {     e.printStackTrace();    }    if (date != null) {     sdf = new SimpleDateFormat(context.getString(targetPatternStrId), Locale.getDefault());     String target = sdf.format(date);     return target;    }    return null;     }     /**    * @param strDate    *            e.g. "2012-12-12 12:12:12"    * @return Wed Dec 12 12:12:12 CST 2012    */   public static Date string2Date(String strDate) {    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");    Date date = null;    try {     date = dateFormat.parse(strDate);    } catch (ParseException e) {     try {      // 第二种格式方案      date = dateFormat2.parse(strDate);     } catch (ParseException e1) {      e1.printStackTrace();      return null;     }    }    return date;   }     /**    * @param strDate    *            2014-02-17    * @return long    */   public static long string2Long(String strDate) {    Date date = string2Date(strDate);    return date.getTime();   }     public static long string2Long2(String time) {    Date date = null;    try {     date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(time);    } catch (Exception e) {     return 0;    }    return date.getTime();   }     /**    * time应该为13位    *     * @param time    * @return yyyy-MM-dd HH:mm:ss    */   public static String long2String(long time) {    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    Date date = new Date(time);    String str = dateFormat.format(date);    return str;   }     /**    * @param time    * @return yyyy-MM-dd    */   public static String long2String2(long time) {    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");    Date date = new Date(time);    String str = dateFormat.format(date);    return str;   }     /**    * time应该为13位    *     * @param time    * @return M月d日 HH:mm    */   public static String long2String3(long time) {    DateFormat dateFormat = new SimpleDateFormat("M月d日 HH:mm");    Date date = new Date(time);    String str = dateFormat.format(date);    return str;   }     /**    * @param time    * @return yy-MM-dd    */   public static String long2String4(long time) {    DateFormat dateFormat = new SimpleDateFormat("yy-MM-dd");    Date date = new Date(time);    String str = dateFormat.format(date);    return str;   }     /**    * @param time    *            yyyy-MM-dd HH:mm:ss or yyyy-MM-ddTHH:mm:ss    * @return yyyy-MM-dd    */   public static String trim(String time) {    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");    Date date = string2Date(time);    String str = dateFormat.format(date);    return str;   }     /**    * @param time    *            yyyy-MM-dd HH:mm:ss    * @return yyyy-MM-dd    */   public static String trim2(String time) {    DateFormat dateFormat = new SimpleDateFormat("M月d日 HH:mm");    Date date = string2Date(time);    String str = dateFormat.format(date);    return str;   }     /**    * @param time    *            yyyy-MM-dd HH:mm:ss    * @return HH:mm    */   public static String trim3(String time) {    DateFormat dateFormat = new SimpleDateFormat("HH:mm");    Date date = string2Date(time);    String str = dateFormat.format(date);    return str;   }     /**    * @param time    *            yyyy-MM-dd    * @return MM-dd    */   public static String string2String(String time) {    DateFormat dateFormat = new SimpleDateFormat("MM-dd");    Date date = string2Date(time);    String str = dateFormat.format(date);    return str;   }     /**    * @param strDate    *            yyyy-MM-dd    * @return M or d    */   public static String string2String2(String strDate) {    DateFormat dateFormat = new SimpleDateFormat("M-d");    Date date = string2Date(strDate);    String str = dateFormat.format(date);    String[] temp = str.split("-");    if (temp[1].equals("1")) {     return temp[0] + "月";    } else {     return temp[1];    }   }     /**    * @param time    *            yyyy-MM-ddTHH:mm:ss    * @return yyyy-MM-dd HH:mm:ss    */   public static String string2String3(String time) {    Date date = null;    try {     date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(time);    } catch (ParseException e) {     e.printStackTrace();    }    String str = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);    return str;   }     /**    * @param time    *            yyyy-MM-ddTHH:mm:ss    * @return yy-MM-dd    */   public static String string2String4(String time) {    Date date = null;    try {     date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(time);    } catch (Exception e) {     return null;    }    String str = new SimpleDateFormat("yyyy-MM-dd").format(date);    return str;   }     /**    * @param time    *            yyyy-MM-dd    * @return yy-MM-dd    */   public static String string2String5(String time) {    Date date = null;    try {     date = new SimpleDateFormat("yyyy-MM-dd").parse(time);    } catch (Exception e) {     return null;    }    String str = new SimpleDateFormat("yy-MM-dd").format(date);    return str;   }     /**    * 获取某一天距离今天多少天    *     * @param date    *            yyyy-MM-dd'T'HH:mm:ss    * @return    */   public static int getPassedDays(String date) {    SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");    int day = 0;    try {     Date passedDate = myFormatter.parse(date);     day = (int) ((System.currentTimeMillis() - passedDate.getTime()) / (24 * 60 * 60 * 1000)) + 1;    } catch (Exception e) {     return 0;    }    return day;   }     /**    *     * 获取当天开始时间    *     * @param index    *            0为当天,1为前一天,以此类推    *     * @return e.g. 1391702400    */   public static long getStartTime(int index) {    Calendar todayStart = Calendar.getInstance();    todayStart.set(Calendar.HOUR, 0);    todayStart.set(Calendar.MINUTE, 0);    todayStart.set(Calendar.SECOND, 0);    todayStart.set(Calendar.MILLISECOND, 0);    return todayStart.getTime().getTime() / 1000 - index * 3600 * 24;   }     /**    * 获取当天结束时间    *     * @param index    *            0为当天,1为前一天,以此类推    *     * @return e.g. 1391788799    */   public static long getEndTime(int index) {    Calendar todayEnd = Calendar.getInstance();    todayEnd.set(Calendar.HOUR, 23);    todayEnd.set(Calendar.MINUTE, 59);    todayEnd.set(Calendar.SECOND, 59);    todayEnd.set(Calendar.MILLISECOND, 999);    return todayEnd.getTime().getTime() / 1000 - index * 3600 * 24;   }     /**    *     * @param minute    *            140    * @return 2小时20分钟    */   public static String second2Hour(int second) {    int minute = second / 60;    if (second % 60 > 30) {     minute += 1;    }    boolean hadAppend = false;    StringBuilder builder = new StringBuilder();    if (minute >= 1440) {     builder.append(minute / 1440 + "天");     minute %= 1440;     hadAppend = true;    }    if (minute >= 60) {     builder.append(minute / 60 + "小时");     minute %= 60;     hadAppend = true;    }    if (!hadAppend || minute != 0) {     builder.append(minute + "分钟");    }      return builder.toString();   }     /**    *     * @param date    *            2014-02-12    * @return    */   public static boolean isToday(String date) {    String today = TimeUtil.long2String2(Calendar.getInstance().getTimeInMillis());    if (date.equals(today)) {     return true;    }    return false;   }     /**    *     * @param date    *            2014-02-12    * @return    */   public static boolean isYesterday(String date) {    String yesterday = TimeUtil.long2String2(Calendar.getInstance().getTimeInMillis() - 3600 * 24 * 1000L);    if (date.equals(yesterday)) {     return true;    }    return false;   }     /**    *     * @param date    *            2014-02-12    * @return    */   public static boolean isTheDayBeforeYesterday(String date) {    String theDayBeforeYesterday = TimeUtil.long2String2(Calendar.getInstance().getTimeInMillis() - 3600 * 24 * 1000L * 2);    if (date.equals(theDayBeforeYesterday)) {     return true;    }    return false;   }     /**    *     * @param date    *            2014-02-12    * @return    */   public static String theDayOfWeek(String date) {    Calendar calendar = Calendar.getInstance();    calendar.setTime(string2Date(date));    int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);    String temp = null;    switch (dayOfWeek) {    case 1:     temp = "周日";     break;    case 2:     temp = "周一";     break;    case 3:     temp = "周二";     break;    case 4:     temp = "周三";     break;    case 5:     temp = "周四";     break;    case 6:     temp = "周五";     break;    case 7:     temp = "周六";     break;      default:     break;    }    return temp;   }     public static String convert(String mDate) {    if (TimeUtil.isToday(mDate)) {     return "今天";    } else if (TimeUtil.isYesterday(mDate)) {     return "昨天";    } else if (TimeUtil.isTheDayBeforeYesterday(mDate)) {     return "前天";    } else {     return TimeUtil.theDayOfWeek(mDate);    }   }     /**    * 获取同步时间    *     * @return    */   public static String recentUpdateTime() {    long recentUpdateTime = PreferenceUtil.getLong(Preferences.RECENT_UPDATE_TIME);    long currentTime = System.currentTimeMillis();    int temp = (int) ((currentTime - recentUpdateTime) / 1000);// 换算成以秒为单位    String reString = null;    if (temp < 60) {     reString = "刚刚同步";    } else if (temp < 1800) {     reString = temp / 60 + "分钟前同步";    } else if (temp < 3600) {     reString = "半小时前同步";    } else if (temp < 3600 * 24) {     reString = temp / 3600 + "小时前同步";    } else if (temp < 3600 * 24 * 7) {     reString = temp / (3600 * 24) + "天前同步";    } else if (temp < 3600 * 24 * 7 * 4) {     reString = temp / (3600 * 24 * 7) + "周前同步";    } else if (temp < 3600 * 24 * 30 * 12) {     reString = temp / (3600 * 24 * 30) + "个月前同步";    } else if (temp < 3600 * 24 * 365 * 10) {     reString = temp / (3600 * 24 * 365) + "年前同步";    } else {     reString = long2String(recentUpdateTime);    }    if (recentUpdateTime == 0) {     reString = "";    }    return reString;   }     /**    * 根据给定日期,添加一天时间    *     * @param date    *            yyyy-mm-dd    * @return yyyy-mm-dd    */   public static String obtainEndDate(String date) {    return TimeUtil.long2String(TimeUtil.string2Long(date) + 86400 * 1000);   }  }