You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package com.xujie.sys.common.utils;
import org.apache.commons.lang.StringUtils;import org.joda.time.DateTime;import org.joda.time.LocalDate;import org.joda.time.format.DateTimeFormat;import org.joda.time.format.DateTimeFormatter;
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.logging.Level;import java.util.logging.Logger;
/** * 日期处理 * * */public class DateUtils { /** 时间格式(yyyy-MM-dd) */ public final static String DATE_PATTERN = "yyyy-MM-dd"; /** 时间格式(yyyy-MM-dd HH:mm:ss) */ public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
/** * 日期格式化 日期格式为:yyyy-MM-dd * @param date 日期 * @return 返回yyyy-MM-dd格式日期 */ public static String format(Date date) { return format(date, DATE_PATTERN); }
/** * 日期格式化 日期格式为:yyyy-MM-dd * @param date 日期 * @param pattern 格式,如:DateUtils.DATE_TIME_PATTERN * @return 返回yyyy-MM-dd格式日期 */ public static String format(Date date, String pattern) { if(date != null){ SimpleDateFormat df = new SimpleDateFormat(pattern); return df.format(date); } return null; }
/** * 字符串转换成日期 * @param strDate 日期字符串 * @param pattern 日期的格式,如:DateUtils.DATE_TIME_PATTERN */ public static Date stringToDate(String strDate, String pattern) { if (StringUtils.isBlank(strDate)){ return null; }
DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern); return fmt.parseLocalDateTime(strDate).toDate(); }
/** * 根据周数,获取开始日期、结束日期 * @param week 周期 0本周,-1上周,-2上上周,1下周,2下下周 * @return 返回date[0]开始日期、date[1]结束日期 */ public static Date[] getWeekStartAndEnd(int week) { DateTime dateTime = new DateTime(); LocalDate date = new LocalDate(dateTime.plusWeeks(week));
date = date.dayOfWeek().withMinimumValue(); Date beginDate = date.toDate(); Date endDate = date.plusDays(6).toDate(); return new Date[]{beginDate, endDate}; }
/** * 对日期的【秒】进行加/减 * * @param date 日期 * @param seconds 秒数,负数为减 * @return 加/减几秒后的日期 */ public static Date addDateSeconds(Date date, int seconds) { DateTime dateTime = new DateTime(date); return dateTime.plusSeconds(seconds).toDate(); }
/** * 对日期的【分钟】进行加/减 * * @param date 日期 * @param minutes 分钟数,负数为减 * @return 加/减几分钟后的日期 */ public static Date addDateMinutes(Date date, int minutes) { DateTime dateTime = new DateTime(date); return dateTime.plusMinutes(minutes).toDate(); }
/** * 对日期的【小时】进行加/减 * * @param date 日期 * @param hours 小时数,负数为减 * @return 加/减几小时后的日期 */ public static Date addDateHours(Date date, int hours) { DateTime dateTime = new DateTime(date); return dateTime.plusHours(hours).toDate(); }
/** * 对日期的【天】进行加/减 * * @param date 日期 * @param days 天数,负数为减 * @return 加/减几天后的日期 */ public static Date addDateDays(Date date, int days) { DateTime dateTime = new DateTime(date); return dateTime.plusDays(days).toDate(); }
/** * 对日期的【周】进行加/减 * * @param date 日期 * @param weeks 周数,负数为减 * @return 加/减几周后的日期 */ public static Date addDateWeeks(Date date, int weeks) { DateTime dateTime = new DateTime(date); return dateTime.plusWeeks(weeks).toDate(); }
/** * 对日期的【月】进行加/减 * * @param date 日期 * @param months 月数,负数为减 * @return 加/减几月后的日期 */ public static Date addDateMonths(Date date, int months) { DateTime dateTime = new DateTime(date); return dateTime.plusMonths(months).toDate(); }
/** * 对日期的【年】进行加/减 * * @param date 日期 * @param years 年数,负数为减 * @return 加/减几年后的日期 */ public static Date addDateYears(Date date, int years) { DateTime dateTime = new DateTime(date); return dateTime.plusYears(years).toDate(); }
// /**
// * @Author sxm
// * @Description 两个日期相差年份
// * @Date 2022/4/12 14:47
// * @Param
// * @return
// **/
// public static int differentDays(Date date1,Date date2)
// {
// Calendar cal1 = Calendar.getInstance();
// cal1.setTime(date1);
//
// Calendar cal2 = Calendar.getInstance();
// cal2.setTime(date2);
// int day1= cal1.get(Calendar.DAY_OF_YEAR);
// int day2 = cal2.get(Calendar.DAY_OF_YEAR);
//
// int year1 = cal1.get(Calendar.YEAR);
// int year2 = cal2.get(Calendar.YEAR);
// if(year1 != year2) //同一年
// {
// int timeDistance = 0 ;
// for(int i = year1 ; i < year2 ; i ++)
// {
// if(i%4==0 && i%100!=0 || i%400==0) //闰年
// {
// timeDistance += 366;
// }
// else //不是闰年
// {
// timeDistance += 365;
// }
// }
//
// return timeDistance + (day2-day1) ;
// }
// else { // 不同年
// return day2-day1;
// }
// }
public static String getStringNow() { SimpleDateFormat sdf = new SimpleDateFormat(DATE_TIME_PATTERN); return sdf.format(new Date()); }
public static Date getStringToDate(String time,String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); try { return sdf.parse(time); } catch (ParseException e) { throw new RuntimeException(e); } }
/** * date2比date1多的天数 * @param date1 * @param date2 * @return */ public static int differentDays (Date date1, Date date2) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(date1); Calendar cal2 = Calendar.getInstance(); cal2.setTime(date2); int day1= cal1.get(Calendar.DAY_OF_YEAR); int day2 = cal2.get(Calendar.DAY_OF_YEAR);
int year1 = cal1.get(Calendar.YEAR); int year2 = cal2.get(Calendar.YEAR); if(year1 != year2) { // 同一年
int timeDistance = 0 ; for(int i = year1; i < year2; i ++) { if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0) { // 闰年
timeDistance += 366; } else { // 不是闰年
timeDistance += 365; } } return timeDistance + (day2-day1); } else { // 不同年
return day2 - day1; } }
/** * 比较两个日期的大小: * 2 发生异常 * 1 firstDate>secondDate * 0 firstDate==secondDate * -1 firstDate<secondDate * @param format * @param firstDate * @param secondDate * @return */ public static int compareDate(String format,String firstDate, String secondDate){ SimpleDateFormat sdf = new SimpleDateFormat(format); int result = 2; try { Date fDate = sdf.parse(firstDate); Date sDate = sdf.parse(secondDate);
if(fDate.getTime()>sDate.getTime()){ result = 1; }else if(fDate.getTime()==sDate.getTime()){ result = 0; }else{ result = -1; } } catch (ParseException ex) { Logger.getLogger(DateUtil.class.getName()).log(Level.SEVERE, null, ex); } return result; }
public static String getStringDate(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(date); }
public static Date getDateDate(Date currentDate) throws ParseException {
// 使用 SimpleDateFormat 格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String formattedDate = sdf.format(currentDate);
// 将格式化的字符串再转换回 Date 对象
Date dateWithoutTime = sdf.parse(formattedDate); return dateWithoutTime; }
public static void main(String[] args) { try { try { getDateByParten("777","yyyy-MM-dd"); }catch (ParseException e){ throw new RuntimeException("格式有误!"); } }catch (Exception e){ System.out.println(e.getMessage()+"66666"); }
}
public static Date getDateByParten(String date, String parten) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(parten); return sdf.parse(date); }}
|