- String 与 Date互转
(1)基于SimpleDateFormat实现:package com.bky.df; import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Date; public class DateLangUtils{ public static void main(String[] args) throws ParseException { Date nowDate = new Date(); String formatString = "yyyy-MM-dd HH:mm:ss"; String dateString = "2018-12-02 16:33:15"; System.out.println(getString(nowDate, formatString)); System.out.println(getDate(dateString, formatString)); System.out.println(getDatePos(dateString, formatString)); } /** * 使用SimpleDateFormat格式化Date * * @param date * @param formatString * @return */ public static String getString(Date date, String formatString) { SimpleDateFormat formatter = new SimpleDateFormat(formatString); return formatter.format(date); } /** * 使用SimpleDateFormat解析日期字符串 * * @param dateString * @param formatString * @return * @throws ParseException */ public static Date getDate(String dateString, String formatString) throws ParseException { SimpleDateFormat formatter = new SimpleDateFormat(formatString); return formatter.parse(dateString); } /** * 使用SimpleDateFormat解析日期字符串 * * @param dateString * @param formatString * @return */ public static Date getDatePos(String dateString, String formatString) { SimpleDateFormat formatter = new SimpleDateFormat(formatString); return formatter.parse(dateString, new ParsePosition(0)); } }
(2)使用commons组件实现
import java.text.ParseException; import java.util.Date; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; public static void main(String[] args) throws ParseException { Date nowDate = new Date(); String formatString = "yyyy-MM-dd HH:mm:ss"; String dateString = "2018-12-02 16:33:15"; System.out.println(DateFormatUtils.format(nowDate, formatString)); System.out.println(DateUtils.parseDate(dateString, formatString)); }
- 对日期的相关操作
基于Calendar实现
Calendar cal = Calendar.getInstance(); // 设置Calendar时间(1.Date 2.longofmills) cal.setTime(new Date()); cal.setTimeInMillis(System.currentTimeMillis()); // 设置年月日,时分秒,毫秒 cal.set(Calendar.YEAR, cal.get(Calendar.YEAR)); // Calendar.MONTH 从0开始表示1月,需要转换展示/设置 cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)); cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH)); // 24小时制 cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY)); // 12小时制 cal.set(Calendar.HOUR, cal.get(Calendar.HOUR)); cal.set(Calendar.MINUTE, cal.get(Calendar.MINUTE)); cal.set(Calendar.SECOND, cal.get(Calendar.SECOND)); cal.set(Calendar.MILLISECOND, cal.get(Calendar.MILLISECOND)); // 设置与星期相关参数 // 设置当周星期周几(1为星期日,7为星期六) cal.set(Calendar.DAY_OF_WEEK, cal.get(Calendar.DAY_OF_WEEK)); // 设置当月第几个星期(默认地区是从星期日开始算,以日历计算第几周) cal.set(Calendar.WEEK_OF_MONTH, cal.get(Calendar.WEEK_OF_MONTH)); // 设置当月第几个星期(设置按当月的天数算第几周,7天一周) cal.set(Calendar.DAY_OF_WEEK_IN_MONTH, cal.get(Calendar.DAY_OF_WEEK_IN_MONTH)); // 设置一年中第几个星期 cal.set(Calendar.WEEK_OF_YEAR, cal.get(Calendar.WEEK_OF_YEAR)); // 设置当月第一天 cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH)); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); // 设置当月最后一天 cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0);
- 计算两个时间之差
/** * 根据需要计算并格式化两个时间之差 * * @param beforeDate * @param afterDate * @param formatPatterns(长度一定要为6,如果不需要则传null) * eg:new String[]{ "年", null, "天", "时", "分", "秒" } * @return */ public static String formatDistanceDate(Date beforeDate, Date afterDate, String[] formatPatterns) { if (formatPatterns == null || formatPatterns.length < 6) return ""; long instance = (afterDate.getTime() - beforeDate.getTime()) / 1000; StringBuilder dateInstanceFormatBuffer = new StringBuilder(); if (formatPatterns[0] != null) { long year = instance / (3600l * 24 * 365); if (year > 0) { dateInstanceFormatBuffer.append(year); dateInstanceFormatBuffer.append(formatPatterns[0]); instance = instance % (3600l * 24 * 365); } } if (formatPatterns[1] != null) { long month = instance / (3600l * 24 * 30); if (month > 0) { instance = instance % (3600l * 24 * 30); dateInstanceFormatBuffer.append(month); dateInstanceFormatBuffer.append(formatPatterns[1]); } } if (formatPatterns[2] != null) { long day = instance / (3600l * 24); if (day > 0) { instance = instance % (3600l * 24); dateInstanceFormatBuffer.append(day); dateInstanceFormatBuffer.append(formatPatterns[2]); } } if (formatPatterns[3] != null) { long hour = instance / 3600; if (hour > 0) { instance = instance % 3600; dateInstanceFormatBuffer.append(hour); dateInstanceFormatBuffer.append(formatPatterns[3]); } } if (formatPatterns[4] != null) { long min = instance / 60; if (min > 0) { dateInstanceFormatBuffer.append(min); dateInstanceFormatBuffer.append(formatPatterns[4]); } } if (formatPatterns[5] != null) { long second = instance % 60; if (second > 0) { dateInstanceFormatBuffer.append(second); dateInstanceFormatBuffer.append(formatPatterns[5]); } } return dateInstanceFormatBuffer.toString(); }
浙公网安备 33010602011771号