标题:java日期格式定义 内容: 该系列为Java工具类系列,主要展示100个常用的java工具类。 此文重点讲述:字符串之个性化格式处理。 一、日期工具类(本文重点)import java. sql. Timestamp;import java. text. ParseException;import java. text. SimpleDateFormat;import java. util. *;/** * @ClassName: DateUtils * @Description: Java7日期工具类 * @Author: dyh * @Date: 2022/11/17 17:00 */public class DateUtils { /** * 显示年月日时分秒,例如 2015-08-11 09:51:53. */ public static final String DATETIME_pattern = yyyy-MM-dd HH:mm:ss; /** * 显示年月日时分,例如 2015-08-11 09:51. */ public static final String NO_SECOND_DATETIME_PATTERN = yyyy-MM-dd HH:mm; /** * 仅显示年月日,例如 2015-08-11. */ public static final String DATE_PATTERN = yyyy-MM-dd; /** * 仅显示时分秒,例如 09:51:53. */ public static final String TIME_PATTERN = HH:mm:ss; /** * 仅显示年(无符号),例如 2015. */ private static final String YEAR_PATTERN = yyyy; /** * 一天的开始时间,仅显示时分秒 */ private static final String START_TIME = 00:00:00; /** * 一天的结束时间,仅显示时分秒 */ private static final String END_TIME = 23:59:59; /** * 每天的毫秒数. */ public static final long MILLISECONDS_PER_DAY = 86400000L; /** * 每小时毫秒数. */ public static final long MILLISECONDS_PER_HOUR = 3600000L; /** * 每秒的毫秒数. */ public static final long MILLISECONDS_PER_SECONDS = 1000L; /** * 星期日; */ public static final String SUNDAY = 星期日; /** * 星期一; */ public static final String MONDAY = 星期一; /** * 星期二; */ public static final String TUESDAY = 星期二; /** * 星期三; */ public static final String WEDNESDAY = 星期三; /** * 星期四; */ public static final String THURSDAY = 星期四; /** * 星期五; */ public static final String FRIDAY = 星期五; /** * 星期六; */ public static final String SATURDAY = 星期六; /** * 获取当前日期和时间字符串. * * @return String 日期时间字符串,例如 2022-11-11 17:00:00 */ public static String getDateTimeStr() { return format(new Date(), DATETIME_PATTERN); } /** * 获取当前日期字符串. * * @return String 日期字符串,例如2022-11-11 */ public static String getDateStr() { return format(new Date(), DATE_PATTERN); } /** * 获取当前时间字符串. * * @return String 时间字符串,例如 17:00:00 */ public static String getTimeStr() { return format(new Date(), TIME_PATTERN); } /** * 获取当前年份字符串. * * @return String 当前年份字符串,例如 2022 */ public static String getYearStr() { return format(new Date(), YEAR_PATTERN); } /** * 获取当前天数字符串. * * @return String 当前天数字符串,例如 11 */ public static String getDayStr() { return format(new Date(), dd); } /** * 获取指定日期是星期几 * * @param date 日期 * @return String 星期几 */ public static String getDayOfWeekStr(Date date) { String[] weekOfDays = {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; Calendar calendar = Calendar. getInstance(); calendar. setTime(date); int num = calendar. get(Calendar. DAY_OF_WEEK) - 1; return weekOfDays[num]; } /** * 获取日期时间字符串 * * @param date 需要转化的日期时间 * @param pattern 时间格式 * @return String 日期时间字符串,例如 2022-11-11 17:00:00 */ public static String format(Date date, String pattern) { return new SimpleDateFormat(pattern). format(date); } /** * 时间戳转换为日期时间字符串 * * @param timestamp 时间戳 * @param pattern 日期格式 例如DATETIME_PATTERN * @return String 日期时间字符串,例如 2022-11-11 17:00:00 */ public static String getDateTimeStr(long timestamp, String pattern) { return new SimpleDateFormat(pattern). format(timestamp); } /** * 日期字符串转换为日期(java. util. Date) * * @param dateStr 日期字符串 * @param pattern 日期格式 例如DATETIME_PATTERN * @return Date 日期 */ public static Date parse(String dateStr, String pattern) { Date date = null; SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); dateFormat. setLenient(false); try { date = dateFormat. parse(dateStr); } catch (ParseException e) { e. printStackTrace(); } return date; } /** * 获取当前日期num月数之后的日期. * * @param num 间隔月数(负数表示之前) * @return Date 日期 */ public static Date addMonths(Date date, int num) { return add(date, num, Calendar. MONTH); } /** * 获取当前日期指定月数之后的日期. * * @param num 间隔月数(负数表示之前) * @return Date 日期 */ public static Date addMonths(int num) { return add(new Date(), num, Calendar. MONTH); } /** * 获取指定日期num天数之后的日期. * * @param date 日期 * @param num 天数(负数表示之前) * @return Date 新的日期 */ public static Date addDays(Date date, int num) { return add(date, num, Calendar. DAY_OF_MONTH); } /** * 获取当前日期指定天数之后的日期. * * @param num 天数(负数表示之前) * @return Date 新的日期 */ public static Date addDays(int num) { return add(new Date(), num, Calendar. DAY_OF_MONTH); } /** * 获取指定日期num小时之后的日期. * * @param date 日期 * @param num 小时数(负数表示之前) * @return Date 新的日期 */ public static Date addHours(Date date, int num) { return add(date, num, Calendar. HOUR_OF_DAY); } /** * 获取当前日期指定小时之后的日期. * * @param num 小时数(负数表示之前) * @return Date 新的日期 */ public static Date addHours(int num) { return add(new Date(), num, Calendar. HOUR_OF_DAY); } /** * 获取指定日期num分钟之后的日期. * * @param date 日期 * @param num 分钟数(负数表示之前) * @return Date 新的日期 */ public static Date addMinutes(Date date, int num) { return add(date, num, Calendar. MINUTE); } /** * 获取当前日期指定分钟之后的日期. * * @param num 分钟数(负数表示之前) * @return Date 新的日期 */ public static Date addMinutes(int num) { return add(new Date(), num, Calendar. MINUTE); } /** * 获取指定日期num秒钟之后的日期. * * @param date 日期 * @param num 秒钟数(负数表示之前) * @return Date 新的日期 */ public static Date addSeconds(Date date, int num) { return add(date, num, Calendar. SECOND); } /** * 获取当前日期指定秒钟之后的日期. * * @param num 秒钟数(负数表示之前) * @return Date 新的日期 */ public static Date addSeconds(int num) { return add(new Date(), num, Calendar. SECOND); } /** * 获取指定日期num毫秒之后的日期. * * @param date 日期 * @param num 毫秒数(负数表示之前) * @return Date 新的日期 */ public static Date addMilliSeconds(Date date, int num) { return add(date, num, Calendar. MILLISECOND); } /** * 获取当前日期指定毫秒之后的日期. * * @param num 毫秒数(负数表示之前) * @return Date 新的日期 */ public static Date addMilliSeconds(int num) { return add(new Date(), num, Calendar. MILLISECOND); } /** * 获取当前日期指定数量日期时间单位之后的日期. * * @param date 日期 * @param num 数量 * @param unit 日期时间单位 * @return Date 新的日期 */ public static Date add(Date date, int num, int unit) { Calendar calendar = Calendar. getInstance(); calendar. setTime(date); calendar. add(unit, num); return calendar. getTime(); } /** * 计算两个日期之间相隔年数. * * @param startDate 开始日期 * @param endDate 结束日期 * @return int 相隔年数,向下取整 */ public static int getYearsBetween(Date startDate, Date endDate) { return getMonthsBetween(startDate, endDate) / 12; } /** * 计算两个日期之间相隔月数. * * @param startDate 开始日期 * @param endDate 结束日期 * @return int 相隔月数,向下取整 */ public static int getMonthsBetween(Date startDate, Date endDate) { int months; int flag = 0; Calendar startCalendar = Calendar. getInstance(); startCalendar. setTime(startDate); Calendar endCalendar = Calendar. getInstance(); endCalendar. setTime(endDate); if (endCalendar. equals(startCalendar)) { return 0; } if (startCalendar. after(endCalendar)) { Calendar temp = startCalendar; startCalendar = endCalendar; endCalendar = temp; } if (endCalendar. get(Calendar. DAY_OF_MONTH) startCalendar. get(Calendar. DAY_OF_MONTH)) { flag = 1; } if (endCalendar. get(Calendar. YEAR) startCalendar. get(Calendar. YEAR)) { months = ((endCalendar. get(Calendar. YEAR) - startCalendar. get(Calendar. YEAR)) * 12 endCalendar. get(Calendar. MONTH) - flag) - startCalendar. get(Calendar. MONTH); } else { months = endCalendar. get(Calendar. MONTH) - startCalendar. get(Calendar. MONTH) - flag; } return months; } /** * 计算两个日期之间相隔天数. * * @param startDate 开始日期 * @param endDate 结束日期 * @return long 相隔天数,向下取整 */ public static long getDaysBetween(Date startDate, Date endDate) { return (endDate. getTime() - startDate. getTime()) / MILLISECONDS_PER_DAY; } /** * 计算两个日期之间相隔小时数. * * @param startDate 开始日期 * @param endDate 结束日期 * @return long 相隔小时数,向下取整 */ public static long getHoursBetween(Date startDate, Date endDate) { return (endDate. getTime() - startDate. getTime()) / MILLISECONDS_PER_HOUR; } /** * 计算两个日期之间相隔秒数. * * @param startDate 开始日期 * @param endDate 结束日期 * @return long 相隔秒数,向下取整 */ public static long getSecondsBetween(Date startDate, Date endDate) { return (endDate. getTime() - startDate. getTime()) / MILLISECONDS_PER_SECONDS; } /** * 将 Date 日期转化为 Calendar 类型日期. * * @param date 指定日期 * @return Calendar Calendar对象 */ public static Calendar getCalendar(Date date) { Calendar calendar = Calendar. getInstance(); calendar. setTime(date); return calendar; } /** * 得到UTC时间,类型为字符串,格式为yyyy-MM-dd HH:mm * 如果获取失败,返回null * * @return */ public static String getUTCTimeStr() { StringBuffer UTCTimeBuffer = new StringBuffer(); // 1、取得本地时间: Calendar cal = Calendar. getInstance(); // 2、取得时间偏移量: int zoneOffset = cal. get(Calendar. ZONE_OFFSET); // 3、取得夏令时差: int dstOffset = cal. get(Calendar. DST_OFFSET); // 4、从本地时间里扣除这些差量,即可以取得UTC时间: cal. add(Calendar. MILLISECOND, -(zoneOffset dstOffset)); int year = cal. get(Calendar. YEAR); int month = cal. get(Calendar. MONTH) 1; int day = cal. get(Calendar. DAY_OF_MONTH); int hour = cal. get(Calendar. HOUR_OF_DAY); int minute = cal. get(Calendar. MINUTE); UTCTimeBuffer. append(year). append(-). append(month). append(-). append(day); UTCTimeBuffer. append( ). append(hour). append(:). append(minute); try { SimpleDateFormat sdf = new SimpleDateFormat(NO_SECOND_DATETIME_PATTERN); sdf. parse(UTCTimeBuffer. toString()); return UTCTimeBuffer. toString(); } catch (ParseException e) { e. printStackTrace(); } return null; } /** * 将Timestamp转换为yyyy-MM-dd HH:mm:ss格式字符串 * * @param timestamp * @return */ public static String timestampToStr(Timestamp timestamp) { return timestamp. toString(). substring(0, 19); } /** * 比较传进来的日期是否大于当前日期,如果传进来的日期大于当前日期则返回true,否则返回false * * @param dateStr 日期字符串 * @param pattern 日期格式 * @return boolean */ public static boolean compareNowDate(String dateStr, String pattern) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); try { Date date = simpleDateFormat. parse(dateStr); return date. after(new Date()); } catch (ParseException e) { e. printStackTrace(); } return false; } /** * 如果endDateStrstartDateStr,返回true,否则返回false * * @param startDateStr 开始日期字符串 * @param endDateStr 结束日期字符串 * @param pattern 日期格式 * @return boolean */ public static boolean compareDate(String startDateStr, String endDateStr, String pattern) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern); try { Date startDate = simpleDateFormat. parse(startDateStr); Date endDate = simpleDateFormat. parse(endDateStr); return endDate. after(startDate); } catch (ParseException e) { e. printStackTrace(); } return false; } /** * 如果startDateendDate,返回true,否则返回false * * @param startDate 开始日期字符串 * @param endDate 结束日期字符串 * @return boolean */ public static boolean compareDate(Date startDate, Date endDate) { return endDate. after(startDate); } /** * 判断日期是否合法 * * @param dateStr yyyy-MM-dd HH:mm:ss格式日期字符串 * @return */ public static boolean isValidDate(String dateStr) { boolean convertSuccess = true; // 指定日期格式为四位年/两位月份/两位日期 SimpleDateFormat format = new SimpleDateFormat(DATETIME_PATTERN); try { format. setLenient(false); format. parse(dateStr); } catch (ParseException e) { e. printStackTrace(); convertSuccess = false; } return convertSuccess; } /** * 获取本月的第一天 * * @return Calendar 日历 */ public static Calendar getStartDayOfMonth(Date date) { Calendar calendar = Calendar. getInstance(Locale. CHINA); calendar. setTime(date); calendar. set(Calendar. DAY_OF_MONTH, 1); calendar. set(Calendar. HOUR_OF_DAY, 0); calendar. set(Calendar. MINUTE, 0); calendar. set(Calendar. SECOND, 0); return calendar; } /** * 获取本月的最后一天 * * @return Calendar 日历 */ public static Calendar getEndDayOfMonth(Date date) { Calendar calendar = Calendar. getInstance(Locale. CHINA); calendar. setTime(date); int i = calendar. getActualMaximum(Calendar. DAY_OF_MONTH); calendar. set(Calendar. DAY_OF_MONTH, i); calendar. set(Calendar. HOUR_OF_DAY, 23); calendar. set(Calendar. MINUTE, 59); calendar. set(Calendar. SECOND, 59); return calendar; }}二、日期基础类介绍Java中,有四个操作日期类型的基本类:1) Date 2)Calendar 3)SimpleDateFormat 4)DateFormat1、Date类 Date表示的是特定的瞬间,精确到毫秒。 1秒=1000毫秒,1毫秒=1000微秒。 Date类常用方法2、Calendar类 Calendar提供了获取和设置各种日历字段的方法;Calendar提供了一个类方法getInstance。 一个calendar的实例是系统时间的抽象表示,可以从中获取年月日等详细信息。 Calendar3、DateFormat类 DateFormat是日期/时间格式化子类的抽象类,可以格式化并解析日期或时间。 DateFormat4、SimpleDateFormat类通过DateFormat的子类SimpleDateFormat类可以得到需要的日期显示格式。 SimpleDateFormat本文仅供个人记录,大家可以借鉴,每行代码都是自己手打,亲测可直接粘贴执行,如有任何问题可在评论区提问,欢迎大家交流。 编辑人:程序幻境码字不易,不喜勿踩 发布时间:2025-04-19 08:25:14 来源:阅天下 链接:https://www.haidaliao.com/html/39899.html