JAVA中日期转换和日期计算的方法
1.不同格式日期相互转换方法
public class TestDateConvertUtil { public static void main(String[] args) throws ParseException { Date date = new Date(); long timestamp = System.currentTimeMillis(); date2String(); string2Date(); date2Timestamp(); timestamp2Date(); cst2Date(); nonstandard2Date(); convertDateStr(); date2Calendar(); calendar2Date(); } public static void date2String() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); String dateStr = sdf.format(date); System.out.println(dateStr); } public static void string2Date() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr = "2018-05-16 19:30:20"; Date date = sdf.parse(dateStr); System.out.println(date); } public static void date2Timestamp() { Date date = new Date(); String timestamp = String.valueOf(date.getTime()); System.out.println(timestamp); } public static void timestamp2Date() { String timestamp = "1526470220000"; Date date = new Date(new Long(timestamp)); System.out.println(date); } public static void cst2Date() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", java.util.Locale.US); String cst = "Tue May 16 19:30:20 CST 2018"; Date date = sdf.parse(cst); System.out.println(date); } public static void nonstandard2Date() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); sdf.setLenient(false); String dateStr = "20180516"; Date date = sdf.parse(dateStr); System.out.println(date); } public static void convertDateStr() throws ParseException { SimpleDateFormat sdfSource = new SimpleDateFormat("yyyyMMdd"); SimpleDateFormat sdfTarget = new SimpleDateFormat("yyyy-MM-dd"); String dateSource = "20180516"; String dateTarget = sdfTarget.format(sdfSource.parse(dateSource)); System.out.println(dateTarget); } public static void date2Calendar() { Date date = new Date(); Calendar c = Calendar.getInstance(); c.setTime(date); System.out.println(c); } public static void calendar2Date() { Calendar c = Calendar.getInstance(); Date date = c.getTime(); System.out.println(date); }}
2.日期计算方法
public class TestDateCalculateUtil { public static void main(String[] args) throws ParseException { DateUtils.setYears(new Date(), 2019); DateUtils.addMonths(new Date(), -1); DateUtils.truncate(new Date(), Calendar.DATE); DateUtils.ceiling(new Date(), Calendar.DATE); DateUtils.getFragmentInDays(new Date(), Calendar.MONTH); DateUtils.truncatedEquals(new Date(), new Date(), Calendar.DATE); DateUtils.truncatedCompareTo(new Date(), new Date(), Calendar.MONTH); getFirstSecondOfMonth(); getLastSecondOfMonth(); getDayOfYear(); getFirstSundayOfMonth(); } public static void getFirstSecondOfMonth() { Date date = new Date(); date = DateUtils.truncate(date, Calendar.MONTH); System.out.println(date); } public static void getLastSecondOfMonth() { Date date = new Date(); date = DateUtils.ceiling(date, Calendar.MONTH); date = DateUtils.addSeconds(date, -1); System.out.println(date); } public static void getDayOfYear() { Date date = new Date(); long day = DateUtils.getFragmentInDays(date, Calendar.YEAR); System.out.println(day); } public static void getFirstSundayOfMonth() { Date date = new Date(); date = DateUtils.setDays(date, 1); while (true) { Calendar c = Calendar.getInstance(); c.setTime(date); if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { System.out.println(date); break; } else { date = DateUtils.addDays(date, 1); } } }}
3.计算日期间隔的方法
public static void main(String[] args) { String period = DurationFormatUtils.formatPeriod(DateUtils.addDays(new Date(), -5).getTime(), new Date().getTime(), "y-M-d"); System.out.println(period); int periodOfMonth = getPeriodOfMonth(DateUtils.addDays(new Date(), -5), new Date()); System.out.println(periodOfMonth); } public static int getPeriodOfMonth(Date dateBegin, Date dateEnd) { Date begin = DateUtils.truncate(dateBegin, Calendar.MONTH); Date end = DateUtils.truncate(dateEnd, Calendar.MONTH); String period = DurationFormatUtils.formatPeriod(begin.getTime(), end.getTime(), "M"); return Integer.parseInt(period); }