学习Java的Date、Calendar日期操作
作者:白小衣
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); } }