123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- package cn.cslg.pas.common.utils;
- import cn.hutool.core.date.DateUtil;
- import org.joda.time.DateTime;
- import org.joda.time.format.DateTimeFormat;
- import org.joda.time.format.DateTimeFormatter;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import java.lang.management.ManagementFactory;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import java.util.regex.Pattern;
- import static cn.cslg.pas.common.utils.DateUtils.FORMAT_STRING;
- public class DateUtils2 {
- public static DateTime formStrToDateTime(String dateString) {
- try {
- DateTimeFormatter formatter;
- if (dateString.contains("-")) {
- formatter = DateTimeFormat.forPattern("yyyy-MM-dd");
- } else if (dateString.contains("//")) {
- formatter = DateTimeFormat.forPattern("yyyy/MM/dd");
- } else if (dateString.contains(":")) {
- formatter = DateTimeFormat.forPattern("yyyy:MM:dd");
- } else if (dateString.contains(".")) {
- formatter = DateTimeFormat.forPattern("yyyy.MM.dd");
- } else {
- formatter = DateTimeFormat.forPattern("yyyyMMdd");
- }
- return formatter.parseDateTime(dateString);
- } catch (Exception e) {
- throw new RuntimeException("时间转化格式错误" + "[dateString=" + dateString + "]" + "[FORMAT_STRING=" + FORMAT_STRING + "]");
- }
- }
- public static List<DateTime> formStrToDateTime(DateTime dateStart, DateTime dateEnd) {
- List<DateTime> dateTimes = new ArrayList<>();
- dateTimes.add(dateStart);
- DateTime minDate1 = new DateTime();
- DateTime minDate2= new DateTime();
- Integer startYear = dateStart.getYear();
- Integer startMonth = dateStart.getMonthOfYear();
- Integer startDay = dateStart.getDayOfYear();
- Integer endYear = dateEnd.getYear();
- Integer endMonth = dateEnd.getMonthOfYear();
- Integer endDay = dateEnd.getDayOfYear();
- if (startYear.equals(endYear) ) {
- if (startMonth.equals(endMonth)) {
- if (startDay .equals(endDay) ) {
- minDate1=dateStart;
- } else {
- int diffDay = endDay - startDay;
- int minDay = diffDay / 2;
- minDate1 = dateStart.plusDays(minDay);
- }
- } else {
- int diffMonth = endYear - startYear;
- int minMonth = diffMonth / 2;
- if(minMonth==0){
- minMonth=1;
- }
- minDate1 = dateStart.plusMonths(minMonth).minusDays(1);
- minDate2 =dateStart.plusMonths(minMonth);
- }
- } else {
- int diffYear = endYear - startYear;
- int minYear = diffYear / 2;
- if(minYear==0){
- minYear=1;
- }
- minDate1 = dateStart.plusYears(minYear).minusDays(1);
- minDate2 =dateStart.plusYears(minYear);
- if(minDate1.isAfter(minDate2)){
- System.out.println("aa");
- }
- }
- dateTimes.add(minDate1);
- dateTimes.add(minDate2);
- dateTimes.add(dateEnd);
- return dateTimes;
- }
- public static String dateTimeToPatentStr(Date dateTime) {
- SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
- return format.format(dateTime);
- }
- public static Date formStrToDate(String dateString) {
- try {
- if(dateString==null||dateString.trim().equals("")){
- return null;
- }
- SimpleDateFormat formatter;
- if (dateString.contains("-")) {
- formatter = new SimpleDateFormat("yyyy-MM-dd");
- } else if (dateString.contains("//")) {
- formatter = new SimpleDateFormat("yyyy/MM/dd");
- } else if (dateString.contains(":")) {
- formatter = new SimpleDateFormat("yyyy:MM:dd");
- } else if (dateString.contains(".")) {
- formatter = new SimpleDateFormat("yyyy.MM.dd");
- } else {
- formatter = new SimpleDateFormat("yyyyMMdd");
- }
- return formatter.parse(dateString);
- } catch (Exception e) {
- throw new RuntimeException("时间转化格式错误" + "[dateString=" + dateString + "]" + "[FORMAT_STRING=" + FORMAT_STRING + "]");
- }
- }
- /**
- * 获取第几个星期
- *
- * @param date
- * @return
- */
- public static int getDateWeekIndex(Date date) {
- Calendar calendar = Calendar.getInstance(Locale.getDefault());
- calendar.setTime(date); // 注意月份是从0开始的,即0=1月,1=2月,...
- // 获取周数可能依赖于Calendar的设置,这里使用默认设置
- int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);
- return weekOfYear;
- }
- /**
- * 获取第几个月
- *
- * @param date
- * @return
- */
- public static int getDateMonthIndex(Date date) {
- Calendar calendar = Calendar.getInstance(Locale.getDefault());
- calendar.setTime(date); // 注意月份是从0开始的,即0=1月,1=2月,...
- // 获取周数可能依赖于Calendar的设置,这里使用默认设置
- int month = calendar.get(Calendar.MONTH) + 1;
- return month;
- }
- /**
- * 获取第几个季度
- *
- * @param date
- * @return
- */
- public static int getDateQuarterIndex(Date date) {
- Calendar calendar = Calendar.getInstance(Locale.getDefault());
- calendar.setTime(date); // 注意月份是从0开始的,即0=1月,1=2月,...
- // 获取周数可能依赖于Calendar的设置,这里使用默认设置
- int month = calendar.get(Calendar.MONTH) + 1;
- int quarter;
- if (month >= Calendar.JANUARY && month <= Calendar.MARCH) {
- quarter = 1;
- } else if (month >= Calendar.APRIL && month <= Calendar.JUNE) {
- quarter = 2;
- } else if (month >= Calendar.JULY && month <= Calendar.SEPTEMBER) {
- quarter = 3;
- } else {
- quarter = 4;
- }
- return quarter;
- }
- public static int getDateYear(Date date) {
- Calendar calendar = Calendar.getInstance(Locale.getDefault());
- calendar.setTime(date); // 注意月份是从0开始的,即0=1月,1=2月,...
- // 获取周数可能依赖于Calendar的设置,这里使用默认设置
- int year = calendar.get(Calendar.YEAR);
- return year;
- }
- public static String getDateIndexStr(Date date, String type) {
- StringBuilder dateStr = new StringBuilder();
- int year = DateUtils2.getDateYear(date);
- dateStr.append(year+"年");
- switch (type) {
- case "week":
- int week = DateUtils2.getDateWeekIndex(date);
- dateStr.append("第" + week + "周");
- break;
- case "month":
- int month = DateUtils2.getDateMonthIndex(date);
- dateStr.append( month + "月");
- break;
- case "quarter":
- int quarter = DateUtils2.getDateQuarterIndex(date);
- dateStr.append("第" + quarter + "季度");
- break;
- }
- String reDate = dateStr.toString();
- return reDate;
- }
- }
|