Android日期格式轉換

對於日期格式轉換能夠用到如下的一個輔助類java

package com.okkuaixiu.staff.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

import android.text.TextUtils;

/**
 * 日期格式化工具類
 * 
 */
public class DateUtil {
	public static SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd",
			Locale.CHINA);
	public static SimpleDateFormat sdf = new SimpleDateFormat(
			"yyyy-MM-dd HH:mm:ss", Locale.CHINA);
	public static SimpleDateFormat sdf_week = new SimpleDateFormat(
			"yyyy-MM-dd EE", Locale.CHINA);
	public static SimpleDateFormat sd_china = new SimpleDateFormat(
			"yyyy年MM月dd日", Locale.CHINA);
	public static SimpleDateFormat sdf_china = new SimpleDateFormat(
			"yyyy年MM月dd日 HH時mm分ss秒", Locale.CHINA);
	public static SimpleDateFormat tt = new SimpleDateFormat(
			"yyyy年MM月dd日  HH:mm", Locale.CHINA);
	public static SimpleDateFormat time_format = new SimpleDateFormat(
			"yyyy年MM月dd日 HH:mm", Locale.CHINA);
	private static Calendar calendar;

	public static String Short2LongDate(String date) {
		try {
			date = sd.format(sdf.parse(date));
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * 2015-01-01 "2015-01-01"
	 * 
	 * @param date
	 * 
	 * @return
	 */
	public static String getStringDate(Date date) {
		return getStringDate(date, true);
	}

	/**
	 * 2015-01-01 "2015-01-01" 2015-01-01 12:00:00 "2015-01-01 12:00:00"
	 * 
	 * @param date
	 * 
	 * @param isshort
	 * @return
	 */
	public static String getStringDate(Date date, boolean isshort) {
		String dateString;
		if (isshort) {
			dateString = sd.format(date);
		} else {
			dateString = sdf.format(date);
		}
		return dateString;
	}

	/**
	 * "2015-01-01" "2015-01-01"
	 * 
	 * @param dateString
	 *            String 日期
	 * @return
	 */
	public static String getStringDate(String dateString) {
		return getStringDate(dateString, true);
	}

	/**
	 * "2015-01-01 "2015-01-01" 2015-01-01 12:00:00 "2015-01-01 12:00:00"
	 * 
	 * @param date
	 * @param isshort
	 * @return
	 */
	public static String getStringDate(String dateString, boolean isshort) {
		if (dateString.equals("")) {
			return "";
		} else {
			try {
				if (isshort) {
					dateString = sd.format(sd.parse(dateString));
				} else {
					dateString = sdf.format(sdf.parse(dateString));
				}
			} catch (ParseException e) {
				e.printStackTrace();
			}
			return dateString;
		}
	}

	/**
	 * 2015-01-01 2015-01-01 週一
	 * 
	 * @param dateString
	 * @return
	 */
	public static String getDateFormat(String dateString) {
		return getDateFormat(dateString, true);
	}

	/**
	 * 2015-01-01 12:00:00 2015-01-01 12:00:00 週一
	 * 
	 * @param dateString
	 * @param ishort
	 * @return
	 */
	public static String getDateFormat(String dateString, Boolean ishort) {
		String weekString = "周";
		return getDateFormat(dateString, ishort, weekString);
	}

	/**
	 * 2015-01-01 2015-01-01 週一 2015-01-01 12:00:00 2015-01-01 12:00:00 週一
	 * 
	 * @param dateString
	 * @param ishort
	 * @param weekString
	 * @return
	 */
	public static String getDateFormat(String dateString, Boolean ishort,
			String weekString) {
		if (dateString.equals("")) {
			return "";
		} else {
			String[] weekDays = { "日", "一", "二", "三", "四", "五", "六" };
			Calendar cal = Calendar.getInstance();
			try {
				if (ishort) {
					dateString = sd.format(sd.parse(dateString));
					cal.setTime(sd.parse(dateString));
				} else {
					dateString = sdf.format(sdf.parse(dateString));
					cal.setTime(sdf.parse(dateString));
				}
			} catch (ParseException e) {
				e.printStackTrace();
			}
			int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
			if (w < 0) {
				w = 0;
			}
			return dateString + " " + weekString + weekDays[w];
		}
	}

	/**
	 * 2015-01-01 2015年01月01日
	 * 
	 * @param date
	 * @return
	 */
	public static String getDateChina(String date) {
		return getDateChina(date, true);
	}

	/**
	 * 2015-01-01 2015年01月01日 2015-01-01 12:00:00 2015年01月01日 12時00分00秒
	 * 
	 * @param date
	 * @param isshort
	 * @return
	 */
	public static String getDateChina(String date, Boolean isshort) {
		try {
			if (isshort) {
				date = sd_china.format(sd.parse(date));
			} else {
				date = sdf_china.format(sdf.parse(date));
			}
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * 2015-12-13 17:13:00 2015年12月13日 17:13
	 * 
	 * @param date
	 * @param isshort
	 * @return
	 */
	public static String getDateChina2(String date, Boolean isshort) {
		try {
			if (isshort) {
				date = tt.format(sd.parse(date));
			} else {
				date = tt.format(sdf.parse(date));
			}
		} catch (Exception e) {
			LogUtil.e("getDateChina2(String date, Boolean isshort)");
		}
		return date;
	}

	/**
	 * 2015-01-01 2015-04-01
	 * 
	 * @param date
	 * 
	 * @param month
	 * @return
	 */
	public static String getMonthDate(String date, int month) {
		try {
			calendar = Calendar.getInstance();
			calendar.setTime(sd.parse(date));
			calendar.add(Calendar.MONTH, month);
			date = sd.format(calendar.getTime());
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * "2015-01-01" dateString
	 * 
	 * @param dateString
	 * 
	 * @return
	 */
	public static Date String2Date(String dateString) {
		return String2Date(dateString, true);
	}

	/**
	 * "2015-01-01 12:00:00" 2015-01-01 12:00:00
	 * 
	 * @param dateString
	 * @return
	 */
	public static Date String2Date(String dateString, boolean isshort) {
		Date date = null;
		try {
			if (isshort) {
				date = sd.parse(dateString);
			} else {
				date = sdf.parse(dateString);
			}
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * "2015-12-23" 2015-10-25 兩個前的倒數第六天
	 * 
	 * @param dateString
	 * @return
	 */
	public static String getCalendarBeforerDate(String dateString) {
		try {
			Date date = sd.parse(dateString);
			Calendar calendar = Calendar.getInstance();
			calendar.setTime(date);
			calendar.add(Calendar.MONTH, -1);
			calendar.set(Calendar.DAY_OF_MONTH, -5);
			dateString = sd.format(calendar.getTime());
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return dateString;
	}

	/**
	 * "2015-12-23" 2015-02-06 兩個月後的第六天
	 * 
	 * @param dateString
	 * @return
	 */
	public static String getCalendarAfterDate(String dateString) {
		try {
			Date date = sd.parse(dateString);
			Calendar calendar = Calendar.getInstance();
			calendar.setTime(date);
			calendar.add(Calendar.MONTH, 2);
			calendar.set(Calendar.DAY_OF_MONTH, 6);
			dateString = sd.format(calendar.getTime());
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return dateString;
	}

	/**
	 * 兩個時間之間的時間段
	 * 
	 * @param dBegin
	 * @param dEnd
	 * @return
	 */
	public static ArrayList<String> getDateBetweenDates(String dBegin,
			String dEnd) {
		ArrayList<String> lDate = new ArrayList<String>();
		try {
			Calendar calBegin = Calendar.getInstance();
			Calendar calEnd = Calendar.getInstance();
			calBegin.setTime(sd.parse(dBegin));
			calBegin.add(Calendar.DAY_OF_MONTH, -1);
			dBegin = sd.format(calBegin.getTime());
			calBegin.setTime(sd.parse(dBegin));
			calEnd.setTime(sd.parse(dEnd));
			while (sd.parse(dEnd).after(calBegin.getTime())) {
				calBegin.add(Calendar.DAY_OF_MONTH, 1);
				lDate.add(sd.format(calBegin.getTime()));
			}
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return lDate;
	}

	/**
	 * 
	 * @param dateString
	 * @return
	 */
	public static Date StringWeek2Date(String dateString) {
		Date date = null;
		try {
			date = sdf_week.parse(dateString);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}
	
	/*time1小於或等於time2,返回true
	 * @Title: T1BeforeT2 
	 * @Description: TODO(這裏用一句話描述這個方法的做用) 
	 * @return boolean    返回類型 
	 * @throws 
	 */
	public static boolean T1BeforeT2(String time1, String time2){
		boolean flag = true;
		try {
			Date date1 = time_format.parse(time1);
			Date date2 = time_format.parse(time2);
			if (date1.getTime() > date2.getTime()) {
				flag = false;
			}
		} catch (Exception e) {
			LogUtil.e(DateUtil.class, "T1BeforeT2", e);
		}
		return flag;
	}
	
	/*把yyyy-MM-dd HH:mm:ss格式的時間轉爲yyyy年MM月dd日 HH:mm格式的時間
	 */
	public static String transTime(String time){
		try {
			if (!TextUtils.isEmpty(time)) {
				Date date = sdf.parse(time);
				time = time_format.format(date);
			}
		} catch (Exception e) {
			LogUtil.e(DateUtil.class, "transTime", e);
		}
		return time;
	}
}

若是須要判斷時間大小,能夠參考如下代碼android

// 判斷開始時間和結束時間的大小
    public static Boolean judgeTimeRightful(Context context, String startTime, String endTime) throws Exception {
        try {
            Date start = ConverToDate(startTime);
            Date end = ConverToDate(endTime);
            if (end.getTime() < start.getTime()) {
                Util.showToast(context, context
                        .getString(R.string.please_again_select_time));
                return false;
            }

        } catch (Exception e) {
            LogUtil.e(Util.class, "judgeTimeRightful()", e);
        }
        return true;
    }

    // String 轉 Date
    @SuppressLint("SimpleDateFormat")
    public static Date ConverToDate(String time) throws Exception {
        DateFormat df = null;
        try {
            df = new SimpleDateFormat("yyyy年MM月dd日");
            return df.parse(time);
        } catch (ParseException e) {
            LogUtil.e(Util.class, "ConverToDate()", e);
        }
        return df.parse("");
    }
相關文章
相關標籤/搜索