java 日期操作,Date、Calendar 操作


java开发中避免不了日期相关操作,这里总结了一些常用方法~

直接上码:

package jse;

import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

/**
 * 常用日期操作
 * 
 * @author puck
 * createDate 2015-07-30 22:54:38
 */
public class TestDate
{
	public static void main(String[] args) throws ParseException, UnsupportedEncodingException
	{
		Calendar cal = Calendar.getInstance();
//		cal.add(Calendar.DAY_OF_MONTH, -48);
		System.out.println(dateToString(cal));
	}
	
	/**
	 * 日期格式化
	 * @param date
	 * @return
	 */
	public static String dateToString(Date date)
	{
//		SimpleDateFormat format = new SimpleDateFormat("y年MM月dd日 E HH时mm分ss秒", Locale.CHINA);
//		SimpleDateFormat format = new SimpleDateFormat("y年M月d日 E H时m分s秒", Locale.CHINA);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); // example
		return sdf.format(date);
	}
	
	/**
	 * 日期格式化
	 * @param date
	 * @return
	 */
	public static String dateToString(Calendar cal)
	{
		return dateToString(cal.getTime());
	}

	/**
	 * dateString 转 Calendar
	 * 
	 * @param Date
	 *            format:2015-06-16 date
	 * @return Calendar
	 * @throws ParseException
	 */
	public static Calendar dateStringToCalendar(String dateStr) throws ParseException
	{
//		Calendar cal = Calendar.getInstance();
//		cal.clear();
//		cal.set(Integer.parseInt(date.substring(0, 4)), Integer.parseInt(date.substring(5, 7)) - 1,
//				Integer.parseInt(date.substring(8, 10)));
//		return cal;
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = sdf.parse(dateStr);
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		return cal;
	}

	/**
	 * dateString 转 Date
	 * 
	 * @param Date
	 *            format:yyyy-MM-dd HH:mm:ss date
	 * @return Calendar
	 * @throws ParseException
	 */
	public static Date dateStringToDate(String date) throws ParseException
	{
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sdf.parse(date);
	}

	/**
	 * Date Convert to Calendar
	 * 
	 * @param date
	 * @return
	 */
	public static Calendar dateToCalendar(Date date)
	{
		Calendar c1 = Calendar.getInstance();
		c1.setTime(date);
		return c1;
	}

	/**
	 * Calendar Convert To Date
	 * @param cal
	 * @return
	 */
	public static Date CalendarToDate(Calendar cal)
	{
		return cal.getTime();
	}

	/**
	 * 计算两个日期相差年月日
	 * 
	 * @param Date
	 *            c1
	 * @param Date
	 *            c2
	 * @return int[]{year, month, day}
	 */
	public int[] calculateDifferDay(Date d1, Date d2)
	{
		Calendar c1 = Calendar.getInstance();
		c1.setTime(d1);
		Calendar c2 = Calendar.getInstance();
		c1.setTime(d2);
		return calculateDifferDay(c1, c2);
	}

	/**
	 * 计算两个日期相差年月日
	 * 
	 * @param Calendar
	 *            c1
	 * @param Calendar
	 *            c2
	 * @return int[]{year, month, day}
	 */
	public int[] calculateDifferDay(Calendar c1, Calendar c2)
	{
		int[] p1 = { c1.get(Calendar.YEAR), c1.get(Calendar.MONTH), c1.get(Calendar.DAY_OF_MONTH) };
		int[] p2 = { c2.get(Calendar.YEAR), c2.get(Calendar.MONTH), c2.get(Calendar.DAY_OF_MONTH) };
		System.out.println("p1[0]=" + p1[0] + " p1[1]=" + p1[1] + " p1[2]=" + p1[2]);
		System.out.println("p2[0]=" + p2[0] + " p2[1]=" + p2[1] + " p2[2]=" + p2[2]);
		int year = p2[0] - p1[0];
		int month = (p2[0] * 12) + p2[1] - ((p1[0] * 12) + p1[1]);
		int day = (int) ((c2.getTimeInMillis() - c1.getTimeInMillis()) / (24 * 60 * 60 * 1000));
		return new int[] { year, month, day };
	}

	/**
	 * 获取日期所在周的第一天
	 * 
	 * @param c
	 * @return
	 */
	public static Calendar getLastDayOfWeek(Calendar c)
	{
//		SimpleDateFormat format2 = new SimpleDateFormat("y年M月d日 E H时m分s秒", Locale.CHINA);
//		System.out.println("当前时间:" + format2.format(c.getTime()));
		c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
//		System.out.println("周一时间:" + format2.format(c.getTime()));
		return c;
	}

	/**
	 * 日期加减
	 * @param c
	 * @param day
	 * @return
	 */
	public static Calendar addOrDecreaseDay(Calendar c, int day)
	{
		c.add(Calendar.DAY_OF_MONTH, day);
		return c;
	}

	/**
	 * 获取月最后一天
	 * @param year
	 * @param month
	 * @return
	 */
	public static int getLastDayOfMonth(int year, int month)
	{
		Calendar c = Calendar.getInstance();
		c.set(year, month - 1, 1);
		return c.getActualMaximum(Calendar.DAY_OF_MONTH);
	}
	
	/**
	 * 获取月最后一天
	 * @param cal
	 * @return
	 */
	public static int getLastDayOfMonth(Calendar cal)
	{
		return cal.getActualMaximum(Calendar.DAY_OF_MONTH);
	}
	
}

欢迎指正、补充哈


你可能感兴趣的:(java 日期操作,Date、Calendar 操作)