时间工具类

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



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值