package com.nq.utils;
|
|
import java.text.DateFormat;
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.Calendar;
|
import java.util.Date;
|
|
public class DateUtil {
|
/**
|
*
|
* @return 返回xx天前的日期
|
*/
|
public static String lastWeek(int dayNum) {
|
Date date = new Date();
|
int year = Integer.parseInt(new SimpleDateFormat("yyyy").format(date));
|
int month = Integer.parseInt(new SimpleDateFormat("MM").format(date));
|
int day = Integer.parseInt(new SimpleDateFormat("dd").format(date)) - dayNum;
|
|
if (day < 1) {
|
month -= 1;
|
if (month == 0) {
|
year -= 1;
|
month = 12;
|
}
|
if (month == 4 || month == 6 || month == 9 || month == 11) {
|
day = 30 + day;
|
} else if (month == 1 || month == 3 || month == 5 || month == 7
|
|| month == 8 || month == 10 || month == 12) {
|
day = 31 + day;
|
} else if (month == 2) {
|
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
|
day = 29 + day;
|
else
|
day = 28 + day;
|
}
|
}
|
String y = year + "";
|
String m = "";
|
String d = "";
|
if (month < 10)
|
m = "0" + month;
|
else
|
m = month + "";
|
if (day < 10)
|
d = "0" + day;
|
else
|
d = day + "";
|
return y + "-" + m + "-" + d;
|
}
|
public static String nextDay(String date) {
|
DateFormat dft = new SimpleDateFormat("yyyy-MM-dd");
|
String nextDay = "";
|
try {
|
Date temp = dft.parse(date);
|
Calendar cld = Calendar.getInstance();
|
cld.setTime(temp);
|
cld.add(Calendar.DATE, 1);
|
temp = cld.getTime();
|
//获得下一天日期字符串
|
nextDay = dft.format(temp);
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
return nextDay;
|
}
|
|
public static String lastManyDays(int dayNum){
|
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
|
Date date=new Date();
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(date);
|
calendar.add(Calendar.DAY_OF_MONTH, -dayNum);
|
date = calendar.getTime();
|
return sdf.format(date);
|
}
|
|
public static String afterManyDays(int dayNum){
|
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
|
Date date=new Date();
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(date);
|
calendar.add(Calendar.DAY_OF_MONTH, +dayNum);
|
date = calendar.getTime();
|
return sdf.format(date);
|
}
|
public static String lastManyDays(String appointDate,int dayNum){
|
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat resultSdf=new SimpleDateFormat("MM-dd");
|
Date date = null;
|
try {
|
date = sdf.parse(appointDate);
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
Calendar calendar = Calendar.getInstance();
|
calendar.setTime(date);
|
calendar.add(Calendar.DAY_OF_MONTH, -dayNum);
|
date = calendar.getTime();
|
return resultSdf.format(date);
|
}
|
|
// 根据year年的第week周,查询本周的起止时间
|
public static String weekToDayFormate(String weekDays){
|
int weekDaysLength = weekDays.length();
|
int year = 0;
|
int week = 0;
|
String resultDay = "";
|
if (weekDays==null){
|
weekDays=new Date().toString();
|
}else {
|
if (weekDays.substring(weekDaysLength-2,weekDaysLength-1).equals("1")){
|
year = Integer.parseInt(weekDays.substring(0,weekDaysLength-2));
|
week = Integer.parseInt(weekDays.substring(weekDaysLength-2,weekDaysLength));
|
}else {
|
year = Integer.parseInt(weekDays.substring(0,weekDaysLength-2));
|
week = Integer.parseInt(weekDays.substring(weekDaysLength-1,weekDaysLength));
|
}
|
}
|
|
|
Calendar calendar = Calendar.getInstance();
|
// ①.设置该年份的开始日期:第一个月的第一天
|
calendar.set(year,0,1);
|
// ②.计算出第一周还剩几天:+1是因为1号是1天
|
int dayOfWeek = 7 - calendar.get(Calendar.DAY_OF_WEEK) + 1;
|
// ③.周数减去第一周再减去要得到的周
|
week = week - 2;
|
// ④.计算起止日期
|
calendar.add(Calendar.DAY_OF_YEAR,week * 7 + dayOfWeek);
|
resultDay+=new SimpleDateFormat("MM/dd").format(calendar.getTime());
|
calendar.add(Calendar.DAY_OF_YEAR, 6);
|
resultDay+="-"+new SimpleDateFormat("MM/dd").format(calendar.getTime());
|
return resultDay;
|
}
|
/**
|
* 根据具体年的周数算出日期范围
|
* @param weekDays '%Y%u' 202106
|
* @param targetNum 往后推的周数
|
* @return MM-dd/MM-dd
|
*/
|
public static String getWeekDays(String weekDays,int targetNum) {
|
int weekDaysLength = weekDays.length();
|
int year = 0;
|
int week = 0;
|
String resultDay = "";
|
if (weekDays==null){
|
weekDays=new Date().toString();
|
}else {
|
if (weekDays.substring(weekDaysLength-2,weekDaysLength-1).equals("1")){
|
year = Integer.parseInt(weekDays.substring(0,weekDaysLength-2));
|
week = Integer.parseInt(weekDays.substring(weekDaysLength-2,weekDaysLength));
|
}else {
|
year = Integer.parseInt(weekDays.substring(0,weekDaysLength-2));
|
week = Integer.parseInt(weekDays.substring(weekDaysLength-1,weekDaysLength));
|
}
|
}
|
// 计算目标周数
|
if (week + targetNum > 52) {
|
year++;
|
week += targetNum - 52;
|
} else if (week + targetNum <= 0) {
|
year--;
|
week += targetNum + 52;
|
} else {
|
week += targetNum;
|
}
|
|
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd");
|
Calendar cal = Calendar.getInstance();
|
|
// 设置每周的开始日期
|
cal.setFirstDayOfWeek(Calendar.SUNDAY);
|
|
cal.set(Calendar.YEAR, year);
|
cal.set(Calendar.WEEK_OF_YEAR, week);
|
|
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
|
String beginDate = sdf.format(cal.getTime());
|
cal.add(Calendar.DAY_OF_WEEK, 6);
|
String endDate = sdf.format(cal.getTime());
|
return beginDate + "~" + endDate;
|
}
|
|
/**
|
* 根据具体年的周数算出日期范围
|
* @param weekDays '%Y%u' 202106
|
* @return MM-dd/MM-dd
|
*/
|
public static String getWeekDays(String weekDays) {
|
int weekDaysLength = weekDays.length();
|
int year = 0;
|
int week = 0;
|
String resultDay = "";
|
if (weekDays==null){
|
weekDays=new Date().toString();
|
}else {
|
if (weekDays.substring(weekDaysLength-2,weekDaysLength-1).equals("1")){
|
year = Integer.parseInt(weekDays.substring(0,weekDaysLength-2));
|
week = Integer.parseInt(weekDays.substring(weekDaysLength-2,weekDaysLength));
|
}else {
|
year = Integer.parseInt(weekDays.substring(0,weekDaysLength-2));
|
week = Integer.parseInt(weekDays.substring(weekDaysLength-1,weekDaysLength));
|
}
|
}
|
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd");
|
Calendar cal = Calendar.getInstance();
|
// 设置每周的开始日期
|
cal.setFirstDayOfWeek(Calendar.SUNDAY);
|
cal.set(Calendar.YEAR, year);
|
cal.set(Calendar.WEEK_OF_YEAR, week);
|
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
|
String beginDate = sdf.format(cal.getTime());
|
cal.add(Calendar.DAY_OF_WEEK, 6);
|
String endDate = sdf.format(cal.getTime());
|
return beginDate + "/" + endDate;
|
}
|
|
/**
|
* 时间戳转换成日期格式字符串
|
* @param seconds 精确到秒的字符串
|
* @return
|
*/
|
public static String timeStamp2Date(String seconds,String format) {
|
if(seconds == null || seconds.isEmpty() || seconds.equals("null")){
|
return "";
|
}
|
if(format == null || format.isEmpty()){
|
format = "yyyy-MM-dd HH:mm:ss";
|
}
|
SimpleDateFormat sdf = new SimpleDateFormat(format);
|
return sdf.format(new Date(Long.valueOf(seconds+"000")));
|
}
|
|
|
|
}
|