import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.checkerframework.checker.units.qual.A;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* @author WSCYZ
* @version 1.0.0
* @PackageName com.location.project.utils
* @ClassName DateUtil.java
* @Description project
* @createTime 2021年04月28日 10:04:00
*/
public class DateUtil {
/**
* 功能描述: 传入指定日期格式,以及日期格式对象,转换为指定格式的日期字符串
*
* @param: [formatStr,date]
* <yyyyMMdd>
* <yyyy-MM-dd HH:mm:ss>
* <yyyy年MM月dd日HH时mm分ss秒>
* @return: java.lang.String
* @auther: WSCYZ
**/
public static String getDateStr(String formatStr, Date date){
//日期格式化显示,首先定义格式
SimpleDateFormat sdf = new SimpleDateFormat(formatStr);
//将格式应用于日期
String nowDate = sdf.format(date);
return nowDate;
}
/**
* 功能描述: 传入指定日期格式,以及日期字符串,转换为日期格式的对象
*
* @param: [formatStr, dateStr]《日期格式,日期字符串》
* <yyyyMMdd>
* <yyyy-MM-dd HH:mm:ss>
* <yyyy年MM月dd日HH时mm分ss秒>
* @return: java.util.Date
* @auther: WSCYZ
**/
public static Date formatDate(String formatStr, String dateStr){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(formatStr);
try {
date = sdf.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 功能描述: 传入指定日期格式,以及日期字符串,转换为日期格式的对象
*
* @param: [formatStr, dateStr]《日期格式,日期字符串》
* <yyyyMMdd>
* <yyyy-MM-dd HH:mm:ss>
* <yyyy年MM月dd日HH时mm分ss秒>
* @return: java.util.Date
* @auther: WSCYZ
**/
public static LocalDateTime formatLocalDate(String formatStr, String dateStr){
//1.具有转换功能的对象
DateTimeFormatter df = DateTimeFormatter.ofPattern(formatStr);
LocalDateTime LocalTime = LocalDateTime.parse(dateStr,df);
return LocalTime;
}
/**
* 功能描述: 获取未来或者过去的日期
* <yyyyMMdd>
* <yyyy-MM-dd HH:mm:ss>
* <yyyy年MM月dd日HH时mm分ss秒>
* @param: [type, formatStr, index]
* @return: java.lang.String
* @auther: WSCYZ
**/
public static String getOldDateStr(String type, String formatStr, int index){
String time = "";
SimpleDateFormat format = new SimpleDateFormat(formatStr);
Calendar c = Calendar.getInstance();
if("YEAR".equals(type)){
c.setTime(new Date());
c.add(Calendar.YEAR, index);
Date y = c.getTime();
time = format.format(y);
System.out.println((index < 0 ? "过去 " : "未来 ") + index + " 年:" + time);
}else if("MONTH".equals(type)){
c.setTime(new Date());
c.add(Calendar.MONTH, index);
Date m = c.getTime();
time = format.format(m);
System.out.println((index < 0 ? "过去 " : "未来 ") + index + " 月:" + time);
}else if("DAY".equals(type)){
c.setTime(new Date());
c.add(Calendar.DATE, index);
Date d = c.getTime();
time = format.format(d);
System.out.println((index < 0 ? "过去 " : "未来 ") + index + " 天:" + time);
}else if("MINUTE".equals(type)){
c.setTime(new Date());
c.add(Calendar.MINUTE, index);
Date d = c.getTime();
time = format.format(d);
System.out.println((index < 0 ? "过去 " : "未来 ") + index + " 分钟:" + time);
}else if("SECOND".equals(type)){
c.setTime(new Date());
c.add(Calendar.SECOND, index);
Date d = c.getTime();
time = format.format(d);
System.out.println((index < 0 ? "过去 " : "未来 ") + index + " 秒:" + time);
}
return time;
}
public static String getOldDateStr(String type, String formatStr, int index,Date dateTime){
String time = "";
SimpleDateFormat format = new SimpleDateFormat(formatStr);
Calendar c = Calendar.getInstance();
if("YEAR".equals(type)){
c.setTime(dateTime);
c.add(Calendar.YEAR, index);
Date y = c.getTime();
time = format.format(y);
System.out.println((index < 0 ? "过去 " : "未来 ") + index + " 年:" + time);
}else if("MONTH".equals(type)){
c.setTime(dateTime);
c.add(Calendar.MONTH, index);
Date m = c.getTime();
time = format.format(m);
System.out.println((index < 0 ? "过去 " : "未来 ") + index + " 月:" + time);
}else if("DAY".equals(type)){
c.setTime(dateTime);
c.add(Calendar.DATE, index);
Date d = c.getTime();
time = format.format(d);
System.out.println((index < 0 ? "过去 " : "未来 ") + index + " 天:" + time);
}else if("MINUTE".equals(type)){
c.setTime(dateTime);
c.add(Calendar.MINUTE, index);
Date d = c.getTime();
time = format.format(d);
System.out.println((index < 0 ? "过去 " : "未来 ") + index + " 分钟:" + time);
}else if("SECOND".equals(type)){
c.setTime(new Date());
c.add(Calendar.SECOND, index);
Date d = c.getTime();
time = format.format(d);
System.out.println((index < 0 ? "过去 " : "未来 ") + index + " 秒:" + time);
}
return time;
}
/**
* 时间戳转换成日期格式字符串
* @param seconds 精确到秒的字符串
* @param format
* @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)));
}
/**
* 日期格式字符串转换成时间戳
* @param date_str 字符串日期
* @param format 如:yyyy-MM-dd HH:mm:ss
* @return
*/
public static String date2TimeStamp(String date_str,String format){
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return String.valueOf(sdf.parse(date_str).getTime()/1000);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
/**
* 取得当前时间戳(精确到秒)
* @return
*/
public static String timeStamp(){
long time = System.currentTimeMillis();
String t = String.valueOf(time/1000);
return t;
}
/**
* 功能描述: 获取本月第一天
*
* @param: []
* @return: java.lang.String
* @auther: WSche
**/
public static String getMonthStart() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH, 1);
Date time = cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time) + " 00:00:00";
}
/**
* 功能描述: 获取本月最后一天
*
* @param: []
* @return: java.lang.String
* @auther: WSche
**/
public static String getMonthEnd() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
Date time = cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time) + " 23:59:59";
}
/**
* 功能描述: 获取本周的第一天
*
* @param: []
* @return: java.lang.String
* @auther: WSche
**/
public static String getWeekStart() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.WEEK_OF_MONTH, 0);
cal.set(Calendar.DAY_OF_WEEK, 2);
Date time = cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time) + " 00:00:00";
}
/**
* 功能描述: 获取本周的最后一天
*
* @param: []
* @return: java.lang.String
* @auther: WSche
**/
public static String getWeekEnd() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_WEEK, cal.getActualMaximum(Calendar.DAY_OF_WEEK));
cal.add(Calendar.DAY_OF_WEEK, 1);
Date time = cal.getTime();
return new SimpleDateFormat("yyyy-MM-dd").format(time) + " 23:59:59";
}
/**
* 功能描述: 获取当月的周一周日的日志List
*
* @param: []
* @return: java.lang.String
* @auther: wscyz
**/
public static JSONArray getWeekArr() {
JSONArray jsonArray = new JSONArray();
String startTime = getMonthStart();
//---------------------------------------------------------------
// 设定时间值
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = simpleDateFormat.parse(startTime);
} catch (ParseException e) {
e.printStackTrace();
}
// 转为calendar格式
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//---------------------------------------------------------------
List<String> timeArr = new ArrayList<>();
Calendar calendarnow = Calendar.getInstance();
boolean firtFlag = true;
String inTime = "";
Integer index = 0;
while (calendar.get(Calendar.MONTH) + 1 <= calendarnow.get(Calendar.MONTH) + 1){
inTime = DateUtil.getDateStr("yyyy-MM-dd",calendar.getTime());
index = getDateWeek("yyyy-MM-dd",inTime);
if( (index == 1 || index == 7) || (index != 1 && index != 7 && firtFlag)){
timeArr.add(inTime);
}
firtFlag = false;
calendar.add(Calendar.DAY_OF_MONTH, +1);
}
if(index != 7){
timeArr.add(inTime);
}
JSONObject jsonObject = new JSONObject();
for (int i = 0 ; i < timeArr.size() ; i++){
int n = i + 1;
if(n%2==0){
jsonObject.putOpt("endTime",timeArr.get(i));
jsonArray.add(jsonObject);
}else{
jsonObject = new JSONObject();
jsonObject.putOpt("startTime",timeArr.get(i));
}
}
return jsonArray;
}
/*
* 功能描述: 判断当前日期是周几 (以周日为一周的第一天)
*
* @param: []
* @return: java.lang.String
* @auther: wscyz
**/
public static Integer getDateWeek(String formatStr,String dateStr) {
// 设定时间值
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatStr);
Date date = null;
try {
date = simpleDateFormat.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
// 转为calendar格式
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
// 如果是周日
/*if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
calendar.add(Calendar.DAY_OF_YEAR,-1);
}*/
/**
* calendar.get(Calendar.MONTH)+1 calendar中的月份以0开头
* Calendar.DAY_OF_WEEK 当前日期是所在周的第几天(以周日为一周的第一天)
* Calendar.DATE 当前日期是几号
* */
// 获取当前日期是当周的第i天
int i = calendar.get(Calendar.DAY_OF_WEEK) - 1;
/* // 获取当前日期所在周的第一天
calendar.add(Calendar.DATE , -i+1);
System.out.println("当前日期所在周的周一是:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
// 获取当前日期所在周的最后一天
calendar.add(Calendar.DATE, 6);
System.out.println("当前日期所在周的周日是:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));*/
return i == 0 ? 7 : i;
}
/**
* 功能描述: 获取当月得所有天数
*
* @param: []
* @return: void
* @auther: wscyz
**/
public static void getAllDays(){
Calendar calendarNow = Calendar.getInstance();
Integer month = calendarNow.get(Calendar.MONTH) + 1;
System.out.println("month---->" + String.format("%02d", 10));
System.out.println("month---->" + getMonthEnd());
System.out.println("month---->" + getMonthEnd().substring(8,10));
}
public static void main(String[] args) {
getAllDays();
}
}
java 日期互转
于 2023-08-08 17:21:55 首次发布