package studio.uphie.one.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; /** * Created by Uphie on 2015/9/6. * Email: uphie7@gmail.com */ public class TimeUtil { public static final long DAY_VALUE = 1000 * 60 * 60 * 24; /** * HH:mm,时间格式 */ private static SimpleDateFormat hourFormat = new SimpleDateFormat( "HH:mm", Locale.getDefault()); /** * yyyy年MM月dd日 HH:mm:ss,时间格式 */ private static SimpleDateFormat timeFormat = new SimpleDateFormat( "yyyy年MM月dd日 HH:mm:ss", Locale.getDefault()); /** * yyyy-MM-dd,时间格式 */ private static SimpleDateFormat format_date = new SimpleDateFormat("yyyy-MM-dd"); /** * 时间格式,注: * h am/pm 中的小时数(1-12) Number 12 * H 一天中的小时数(0-23) Number 0 * k 一天中的小时数(1-24) Number 24 * K am/pm 中的小时数(0-11) Number 0 */ private static SimpleDateFormat format_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** * 获取当前日期,eg: 2015-09-06 * * @return */ public static String getDate() { return format_date.format(new Date()); } /** * 获取指定时间的日期,eg: 2015-09-06 * * @param time 2015-08-26 17:16:12 格式 * @return */ public static String getDate(String time) { try { Date date = format_time.parse(time); return format_date.format(date); } catch (ParseException e) { e.printStackTrace(); } return ""; } /** * 获取英文格式的日期,eg: Sep. 9,2015 * * @param date * @return */ public static String getEngDate(String date) { try { Date d = format_date.parse(date); StringBuilder builder = new StringBuilder(); switch (d.getMonth()) { case 0: builder.append("January"); break; case 1: builder.append("February"); break; case 2: builder.append("March"); break; case 3: builder.append("April"); break; case 4: builder.append("May"); break; case 5: builder.append("June"); break; case 6: builder.append("July"); break; case 7: builder.append("Aguest"); break; case 8: builder.append("September"); break; case 9: builder.append("October"); break; case 10: builder.append("November"); break; case 11: builder.append("December"); break; } builder.append(" " + new SimpleDateFormat("dd,yyyy").format(d)); return builder.toString(); } catch (ParseException e) { e.printStackTrace(); } return ""; } /** * 将指定日期进行偏移,获取偏移后的日期,eg:2015-09-06 * * @param date 要偏移的日期,需是"2015-09-06"格式 * @param offset 偏移的值,可正可负 * @return */ public static String getPreviousDate(String date, int offset) { try { Date d = format_date.parse(date); Calendar calendar = Calendar.getInstance(); calendar.setTime(d); calendar.roll(Calendar.DAY_OF_MONTH, -offset + 1); return format_date.format(calendar.getTime()); } catch (ParseException e) { e.printStackTrace(); } return ""; } /** * 获得日期中的日 * * @param date * @return */ public static String getDay(String date) { try { Date d = format_date.parse(date); Calendar calendar = Calendar.getInstance(); calendar.setTime(d); int day = calendar.get(Calendar.DAY_OF_MONTH); return day < 10 ? "0" + day : "" + day; } catch (ParseException e) { e.printStackTrace(); } return ""; } /** * 月份和年 * * @param date * @return */ public static String getMonthAndYear(String date) { try { Date d = format_date.parse(date); StringBuilder builder = new StringBuilder(); switch (d.getMonth()) { case 0: builder.append("Jan,"); break; case 1: builder.append("Feb,"); break; case 2: builder.append("Mar,"); break; case 3: builder.append("Apr,"); break; case 4: builder.append("May,"); break; case 5: builder.append("Jun,"); break; case 6: builder.append("Jul,"); break; case 7: builder.append("Agg,"); break; case 8: builder.append("Sep,"); break; case 9: builder.append("Oct,"); break; case 10: builder.append("Nov,"); break; case 11: builder.append("Dec,"); break; } builder.append(d.getYear() + 1900); return builder.toString(); } catch (ParseException e) { e.printStackTrace(); } return ""; } /** * 获取目标时间距离当前时间的天数的差值 * * @param time 目标时间 * @return 天数差值 */ public static long getDateDifference(String time) { try { Date date = format_date.parse(time); Calendar now = Calendar.getInstance(); now.clear(Calendar.HOUR); now.clear(Calendar.MINUTE); now.clear(Calendar.SECOND); now.clear(Calendar.MILLISECOND); long dif = now.getTimeInMillis() - date.getTime(); return dif / DAY_VALUE; } catch (ParseException e) { e.printStackTrace(); } return -1; } /** * 转换成HH:mm的时间格式 * * @param date * @return */ public static String toSimpleTime(Date date) { return hourFormat.format(date); } public static String toCommonTime(Date date) { return timeFormat.format(date); } }