java 日期互转

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();
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值