package cn.com.thtf.sjpg2.utils;
import org.apache.http.util.TextUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class DataUtils {
/**
* 得到当前日期的年份
*
* @return YYYY
*/
public static String getCurrentDateOfYear() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("YYYY");
String times = sdf.format(date);
return times;
}
/**
* 判断月份属于哪个季度
* @param date
* @return
*/
public static String judgeQuarter(String date){
String[] strs = date.split("-");
String result = strs[0] + "-";
int month = Integer.parseInt(strs[1]);
if(month >= 1 && month <= 3){
result += "03";
}
if(month >= 4 && month <= 6){
result += "06";
}
if(month >= 7 && month <= 9){
result += "09";
}
if(month >= 10 && month <= 12){
result += "12";
}
return result;
}
public static List<String> getBgq(String frequency,Integer count){
List<String> dateList = new ArrayList<>();
if("SS".equals(frequency)){
// 创建 Calendar 对象并设置为当前时间
Calendar calendar = Calendar.getInstance();
// 获取当前年份、月份和日期
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int currentQuarter = (month - 1) / 3 + 1;
// 输出前N个季度
for (int i = 0; i < count; i++) {
int previousQuarter = currentQuarter - i;
int previousYear = year;
if (previousQuarter <= 0) {
previousQuarter += 4;
previousYear--;
}
while (previousQuarter<=0){
previousQuarter += 4;
previousYear--;
}
dateList.add(previousYear+"0"+previousQuarter+"SS");
}
}else if("MM".equals(frequency)){
Calendar calendar = Calendar.getInstance();
// 月份最大为11 最小为0 所以设置初始月份时加1,需要获取到当前月份所以设置初始月份时需要加2
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) + 2);
for (int i = 0; i < count; i++) {
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);
// 需要判断月份是否为0 如果0则需要转换成12,年份转为去年;,如果月份小于10,则前面加上0
dateList.add(calendar.get(Calendar.MONTH) == 0 ?
calendar.get(Calendar.YEAR) - 1 + "" + 12+"MM" :
calendar.get(Calendar.YEAR) + "" + (calendar.get(Calendar.MONTH) < 10 ? "0" + calendar.get(Calendar.MONTH) : calendar.get(Calendar.MONTH)) +"MM");
}
}else if("YY".equals(frequency)){
String currYear = getCurrentDateOfYear();
if(!TextUtils.isEmpty(currYear)){
int currYear_int = Integer.parseInt(currYear);
dateList.add(currYear_int+"01YY");
for (int i = 0;i < count-1 ;i++){
currYear_int--;
dateList.add(currYear_int+"01YY");
}
}
}
return dateList;
}
/*
* 自现在 多少月份 多少年 多少季度
* */
public static List<String> getThisYearBgq(String frequency){
List<String> dateList = new ArrayList<>();
if("SS".equals(frequency)){
// 创建 Calendar 对象并设置为当前时间
Calendar calendar = Calendar.getInstance();
// 获取当前年份、月份和日期
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int currentQuarter = (month - 1) / 3 + 1;
// 输出前N个季度
for (int i = 0; i < currentQuarter; i++) {
int previousQuarter = currentQuarter - i;
int previousYear = year;
if (previousQuarter <= 0) {
break;
}
dateList.add(previousYear+"0"+previousQuarter+"SS");
}
}else if("MM".equals(frequency)){
Calendar calendar = Calendar.getInstance();
// 月份最大为11 最小为0 所以设置初始月份时加1,需要获取到当前月份所以设置初始月份时需要加2
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
for (int i = 0; i < month; i++) {
int curMonth = month-i;
// 需要判断月份是否为0 如果0则需要转换成12,年份转为去年;,如果月份小于10,则前面加上0
if(curMonth == 0){
break;
}
if(curMonth < 10){
dateList.add(year+"0"+curMonth+"MM");
}else{
dateList.add(year+""+curMonth+"MM");
}
}
}else if("YY".equals(frequency)){
String currYear = getCurrentDateOfYear();
if(!TextUtils.isEmpty(currYear)){
int currYear_int = Integer.parseInt(currYear);
dateList.add(currYear_int+"01YY");
}
}
return dateList;
}
/*
* 两个日期之间间隔 多少月份 多少年 多少季度
* */
public static List<String> getBgqByTime(String frequency,String startTime,String endTime){
List<String> dateList = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = null;
Date date2 = null;
try {
date1 = sdf.parse(endTime);
date2 = sdf.parse(startTime);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
int yearDiff = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
int monthDiff = yearDiff * 12 + cal1.get(Calendar.MONTH)+1 - cal2.get(Calendar.MONTH);
int quarterDiff = monthDiff / 3 +2;
// 获取当前年份、月份和日期
int year1 = cal1.get(Calendar.YEAR);
int month1 = cal1.get(Calendar.MONTH) + 1;
int currentQuarter1 = (month1 - 1) / 3 + 1;
if("SS".equals(frequency)){
for (int i = 0; i < quarterDiff; i++) {
int previousQuarter = currentQuarter1 -i;
int previousYear = year1;
if (previousQuarter <= 0) {
previousQuarter += 4;
previousYear--;
}
while (previousQuarter<=0){
previousQuarter += 4;
previousYear--;
}
dateList.add(previousYear+"0"+previousQuarter+"SS");
}
}else if("MM".equals(frequency)){
for (int i = 0; i < monthDiff; i++) {
int curMonth = month1-i;
int previousYear = year1;
// 需要判断月份是否为0 如果0则需要转换成12,年份转为去年;,如果月份小于10,则前面加上0
if(curMonth<=0){
curMonth +=12;
previousYear--;
}
while (curMonth<=0){
curMonth += 12;
previousYear--;
}
if(curMonth < 10){
dateList.add(previousYear+"0"+curMonth+"MM");
}else{
dateList.add(previousYear+""+curMonth+"MM");
}
}
}else if("YY".equals(frequency)){
for (int i = 0; i <= yearDiff; i++) {
int previousYear = year1 -i;
dateList.add(previousYear+"01YY");
}
}
return dateList;
}
}
java 日期操作---获取当前日期前几个月份,年份,季度
于 2023-12-19 14:21:04 首次发布