1. 程式人生 > >[Java]對時間進行格式化:昨天、今天、明天、星期幾

[Java]對時間進行格式化:昨天、今天、明天、星期幾

最近在android專案中有個對時間格式化成:類似今天、昨天、星期幾,以下是整理並修改的程式碼,分享給有需要的人。

import java.text.DateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;

public class TimeTest {

	private static GregorianCalendar calendar = new GregorianCalendar();

	public TimeTest() {
	}

	// 提供“yyyy-mm-dd”形式的字串到毫秒的轉換
	public static long getMillis(String dateString) {
		String[] date = dateString.split("-");
		return getMillis(date[0], date[1], date[2]);

	}

	// 根據輸入的年、月、日,轉換成毫秒錶示的時間
	public static long getMillis(int year, int month, int day) {
		GregorianCalendar calendar = new GregorianCalendar(year, month, day);
		return calendar.getTimeInMillis();

	}

	// 根據輸入的年、月、日,轉換成毫秒錶示的時間
	public static long getMillis(String yearString, String monthString,
			String dayString) {
		int year = Integer.parseInt(yearString);
		int month = Integer.parseInt(monthString)-1;
		int day = Integer.parseInt(dayString);
		return getMillis(year, month, day);

	}

	// 獲得當前時間的毫秒錶示
	public static long getNow() {
		GregorianCalendar now = new GregorianCalendar();
		return now.getTimeInMillis();

	}

	// 根據輸入的毫秒數,獲得日期字串
	public static String getDate(long millis) {
		calendar.setTimeInMillis(millis);
		return DateFormat.getDateInstance().format(calendar.getTime());

	}

	// 根據輸入的毫秒數,獲得年份
	public static int getYear(long millis) {
		calendar.setTimeInMillis(millis);
		return calendar.get(Calendar.YEAR);

	}

	// 根據輸入的毫秒數,獲得月份
	public static int getMonth(long millis) {
		calendar.setTimeInMillis(millis);
		return calendar.get(Calendar.MONTH);

	}

	// 根據輸入的毫秒數,獲得日期
	public static int getDay(long millis) {
		calendar.setTimeInMillis(millis);
		return calendar.get(Calendar.DATE);

	}

	// 根據輸入的毫秒數,獲得小時
	public static int getHour(long millis) {
		calendar.setTimeInMillis(millis);
		return calendar.get(Calendar.HOUR_OF_DAY);

	}

	// 根據輸入的毫秒數,獲得分鐘
	public static int getMinute(long millis) {
		calendar.setTimeInMillis(millis);
		return calendar.get(Calendar.MINUTE);

	}

	// 根據輸入的毫秒數,獲得秒
	public static int getSecond(long millis) {
		calendar.setTimeInMillis(millis);
		return calendar.get(Calendar.SECOND);

	}
	//獲取指定毫秒數的對應星期
	public static String getWeek(long millis) {
		calendar.setTimeInMillis(millis);
		String week = "";
		int cweek = calendar.get(Calendar.DAY_OF_WEEK);
		switch (cweek) {
		case 1:
			week = "日";
			break;
		case 2:
			week = "一";
			break;
		case 3:
			week = "二";
			break;
		case 4:
			week = "三";
			break;
		case 5:
			week = "四";
			break;
		case 6:
			week = "五";
			break;
		case 7:
			week = "六";
			break;
		}
		return week;

	}

	// 獲得今天日期
	public static String getTodayData() {
		return getDate(getNow());

	}

	// 獲得明天日期
	public static String getTomoData() {
		// 86400000為一天的毫秒數
		return getDate(getNow() + 86400000);

	}

	// 獲得後天日期
	public static String getTheDayData() {
		return getDate(getNow() + 86400000 + 86400000);
	}

	// 獲得昨天日期
	public static String getYesData() {
		return getDate(getNow() - 86400000L);
	}

	// 獲得前天日期
	public static String getBeforeYesData() {
		return getDate(getNow() - 86400000L - 86400000L);
	}
	
	/**
	 * 獲取今天時間具體內容
	 * @return
	 */
	public static String StringData() {
		final Calendar c = Calendar.getInstance();
		c.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
		String mYear = String.valueOf(c.get(Calendar.YEAR)); // 獲取當前年份
		String mMonth = String.valueOf(c.get(Calendar.MONTH) + 1);// 獲取當前月份
		String mDay = String.valueOf(c.get(Calendar.DAY_OF_MONTH));// 獲取當前月份的日期號碼
		String mWay = String.valueOf(c.get(Calendar.DAY_OF_WEEK));
		if ("1".equals(mWay)) {
			mWay = "天";
		} else if ("2".equals(mWay)) {
			mWay = "一";
		} else if ("3".equals(mWay)) {
			mWay = "二";
		} else if ("4".equals(mWay)) {
			mWay = "三";
		} else if ("5".equals(mWay)) {
			mWay = "四";
		} else if ("6".equals(mWay)) {
			mWay = "五";
		} else if ("7".equals(mWay)) {
			mWay = "六";
		}
		return mYear + "年" + mMonth + "月" + mDay + "日" + " 星期" + mWay;
	}
	/**
	 * 獲取類似今天、昨天的簡單名稱
	 * @param date 格式為 20xx-xx-xx
	 * @return
	 */
	public static String getCustomStr(String date){
		if(getMillis(date)==getMillis(getBeforeYesData())){
			return "前天";
		}else if(getMillis(date)==getMillis(getYesData())){
			return "昨天";
		}else if(getMillis(date)==getMillis(getTodayData())){
			return "今天";
		}else if(getMillis(date)==getMillis(getTomoData())){
			return "明天";
		}else if(getMillis(date)==getMillis(getTheDayData())){
			return "後天";
		}else{
			return "星期"+getWeek((getMillis(date)));
		}
	}
	
	public static void main(String[] args) {
		System.out.println("前天:" + getBeforeYesData());
		System.out.println("昨天:" + getYesData());
		System.out.println("今天:" + getTodayData());
		System.out.println("明天:" + getTomoData());
		System.out.println("後天:" + getTheDayData());
		System.out.println(StringData());
		System.out.println("星期" + getWeek((getMillis("2015-1-14"))));
		System.out.println(getCustomStr("2015-01-16"));
	}
}
如有疑問,可留言解答。