Java時間工具類

jopen 10年前發布 | 23K 次閱讀 工具類 Java開發

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);
}

}</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!