日期格式化工具类
程序员文章站
2022-03-22 10:05:39
...
package com.sound.cityportal.base.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Calendar; import java.util.Date; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 处理时间格式函数 * * @author zhangyong */ public class DateUtil { private Date date; public DateUtil(Date date) { if (null == date) { date = new Date(); } else { this.date = date; } } /** * 格式化时间样式 * * @return 返回 yyyy-MM-dd HH:mm:ss 格式字符串 */ public String toFormat() { String patten = "yyyy-MM-dd HH:mm:ss"; return toFormat(patten); } /** * 格式化为指定格式 * * @param patten * 日期格式如:yyyy/MM/dd */ public String toFormat(String patten) { SimpleDateFormat sdf = new SimpleDateFormat(patten); String returnStr = sdf.format(date); return returnStr; } public static String toFormatYmdHms() { String patten = "yyyy-MM-dd HH:mm:ss"; SimpleDateFormat sdf = new SimpleDateFormat(patten); String returnStr = sdf.format(new Date()); return returnStr; } /** * 格式化为指定格式 * * @param strDate * 日期格式如:yyyy-MM-dd HH:mm:ss * @throws ParseException */ public static Date str2Date(String strDate) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.parse(strDate); } /** * * @Title: dateToString * @Description: 时间转字符串 * @param @param date * @param @return * @param @throws ParseException 设定文件 * @return String 返回类型 * @throws * @author Lvshiyang * @date 2017年11月23日 下午6:24:14 */ public static String dateToString(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); return sdf.format(date); } /** * 计算两个日期之间相差的天数 * * @param smdate * 较小的时间 * @param bdate * 较大的时间 * @return 相差天数 * @throws ParseException */ public static int daysBetween(Date smdate, Date bdate) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); smdate = sdf.parse(sdf.format(smdate)); bdate = sdf.parse(sdf.format(bdate)); Calendar cal = Calendar.getInstance(); cal.setTime(smdate); long time1 = cal.getTimeInMillis(); cal.setTime(bdate); long time2 = cal.getTimeInMillis(); long between_days = (time2 - time1) / (1000 * 3600 * 24); return Integer.parseInt(String.valueOf(between_days)); } /** * 获取某月的天数 * * @param year * 年份,如果不传默认使用当前年 * @param month * 月份,入股不传默认使用当前月 * @return */ public static int getDaysOfMonth(Integer year, Integer month) { Calendar time = Calendar.getInstance(); //获取当前年月 int currYear = time.get(Calendar.YEAR); int currMonth = time.get(Calendar.MONTH) + 1; time.clear(); time.set(Calendar.YEAR, null == year ? currYear : year); time.set(Calendar.MONTH, null == month ? currMonth : month - 1); return time.getActualMaximum(Calendar.DAY_OF_MONTH); } /** * @Description 获取当前时间的当前月的第一天 */ public static String firstDayOfMonth(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal_1=Calendar.getInstance(); cal_1.add(Calendar.MONTH, -1); cal_1.set(Calendar.DAY_OF_MONTH,1); return sdf.format(cal_1.getTime()); } /** * @Description 获取当前时间的当前月的最后一天 */ public static String lastDayOfMonth(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar cale = Calendar.getInstance(); cale.set(Calendar.DAY_OF_MONTH,0); return sdf.format(cale.getTime()); } /** * @describe:long类型变日期类型 * @author wangruwei * @date 2018年4月9日上午11:26:48 * @param time * @return */ public static Date longToDate(long time){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String d = format.format(time); Date date; try { date = format.parse(d); return date; } catch (ParseException e) { e.printStackTrace(); return null; } } /** * @describe:日期正则表达式 格式如:yyyy-MM-dd * @author Lvshiyang * @date 2018年4月19日10:36:36 */ public static final String YMD_REXP = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))"; public static boolean YMD_REXP(String date){ Pattern p = Pattern.compile(YMD_REXP); Matcher startM = p.matcher(date); boolean b = startM.matches(); return b; } /** * java8 java.time.LocalDateTime --> java.util.Date */ public static Date LocalDateTimeToUdate() { LocalDateTime localDateTime = LocalDateTime.now(); ZoneId zone = ZoneId.systemDefault(); Instant instant = localDateTime.atZone(zone).toInstant(); java.util.Date date = Date.from(instant); return date; } /** * @describe:日期正则表达式 格式如:yyyy-MM-dd HH:mm:ss * @author Lvshiyang * @date 2018年4月19日10:36:36 */ public static final String YMDHMS_REXP = "^(((20[0-3][0-9]-(0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|(20[0-3][0-9]-(0[2469]|11)-(0[1-9]|[12][0-9]|30))) (20|21|22|23|[0-1][0-9]):[0-5][0-9]:[0-5][0-9])$"; public static boolean YMDHMS_REXP(String date){ return Pattern.compile(YMDHMS_REXP).matcher(date).matches(); } }
上一篇: Reg命令使用详解 批处理操作注册表必备
下一篇: 在厂里和老板的岳父打起来了