【java】时间格式相关

时间格式

yyyy-MM-dd HH:mm:ss SSS
含义:年-月-日 时:分:秒 毫秒
说明:以下内容是我用的比较多的,其实每次写代码基本还是会在网上搜怎么写,有点儿浪费时间,所以记录一下。

1.改变日期(yyyy-MM-dd)增减天数

    /**
	 * 此方法是为了改变日期
	 * @param date 原始日期
	 * @param num  改变天数,正数则是加几天,负数则是减几天
	 * @return
	 */
	public  static String changeDateStr(String date,int num){
		SimpleDateFormat myFmt=new SimpleDateFormat("yyyy-MM-dd");
		String dateStr = "";
		Date dt = null;
		try {
			dt = myFmt.parse(date);
			Calendar rightNow = Calendar.getInstance();  
	        rightNow.setTime(dt);  
	        rightNow.add(Calendar.DAY_OF_YEAR, num);// 日期增减num天  
			 dateStr = myFmt.format(rightNow.getTime());
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return dateStr;
	}

2.不熟悉的格式转换

第一种:

    public static void amANDpm(){
    	try {
			String timeStr = "1/12/2019 12:17 AM";
			SimpleDateFormat df = new SimpleDateFormat ("MM/dd/yyyy HH:mm a", Locale.UK);
			Date time = df.parse(timeStr);
			SimpleDateFormat df2 = new SimpleDateFormat ("yyyy-MM-dd HH:mm");
			System.out.println(df2.format(time));
		} catch (ParseException e) {
			e.printStackTrace();
		}
    }

这块代码是将不熟悉的格式转换成熟悉的格式,代码结果:
在这里插入图片描述

还有一些不熟悉的格式:
第二种:

	public static void amANDpm2() {
		try {
			//转换成特定的格式
			SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy K:m:s a", Locale.ENGLISH);
			Date d2 = sdf.parse("Sep 29, 2012 1:00:01 AM");
			Date d3 = new Date();
			System.out.println("d2<系统默认> ====== " + d2);
			System.out.println("d3<系统默认> ====== " + d3);
			System.out.println("d3<特定格式> ====== " + sdf.format(d3));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

这段代码的运行结果:
在这里插入图片描述

3.带有时区

1.将日期换成有时区的格式:

	public static String parseDateWithZ(String dateStr){
		String result = "";
		//此格式只有  jdk 1.7以上才支持  yyyy-MM-dd'T'HH:mm:ss.SSSXXX      
		try {
		 DateFormat df3 = new SimpleDateFormat("yyyy-MM-dd");
		 Date date = df3.parse(dateStr);
		//特定格式
		 DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); //yyyy-MM-dd'T'HH:mm:ss.SSSZ
		 result= df.format(date);
		 System.out.println(result);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

此代码结果:(参数:2019-11-10)
在这里插入图片描述

2.第二种特殊格式

	public static String parseDateWithZ2(String dateStr){
		String result = "";
		//此格式只有  jdk 1.7才支持  yyyy-MM-dd'T'HH:mm:ss.SSSXXX      
		try {
			DateFormat df3 = new SimpleDateFormat("yyyy-MM-dd");
			Date date = df3.parse(dateStr);
		 //特殊格式
		 SimpleDateFormat df1 = new SimpleDateFormat ("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK);
		 System.out.println("特殊格式:"+df1.format(date));
		 //常用格式
		 DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		 System.out.println("常用格式:"+df2.format(date));
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

代码结果:(参数:2019-11-10)
在这里插入图片描述

4.判断一个日期是否在一个特定范围

	/**
	 * 判断是否在两个日期之间
	 * @param judgeDate  待判断的日期
	 * @param startDate  起始日期
	 * @param endDate    结束日期
	 * @return true-在两个日期范围内
	 */
	public static boolean isMidINdate(String judgeDate,String startDate,String endDate){
		if(StringUtils.isEmpty(judgeDate)||StringUtils.isEmpty(startDate)||StringUtils.isEmpty(endDate)){
			return false;
		}
		long judge = 0L;
		if(judgeDate.contains("-")){//是yyyy-MM-dd格式的
			judge = DateUtil.parse(judgeDate, "yyyy-MM-dd").getTime();//转换格式
		}else{//直接是long的字符串
			judge = Long.parseLong(judgeDate);
		}
		long start = DateUtil.parse(startDate, "yyyy-MM-dd").getTime();//转换格式
		long end = DateUtil.parse(endDate, "yyyy-MM-dd").getTime();//转换格式
		if(judge>=start && judge <=end){
			return true;
		}
		return false;
	}

举例解释:
1.参数:judgeDate =2019-12-21,startDate=2019-10-17,endDate=2019-12-20,结果:false.
2.参数:judgeDate =2019-12-18,startDate=2019-10-17,endDate=2019-12-20,结果:true.

5.判断是否在7天之后

	/**
	 * 判断两个日期是否在7天以后,如果只有一个参数则只判断第一个,有第二个参数再判断第二个日期
	 * @param date1
	 * @param date2
	 * @return 只要与一个日期在7天之后则返回true
	 */
	public static boolean isDateOut7Day(String date1,String date2){
		long date1Time = DateUtil.parse(date1, "yyyy-MM-dd").getTime();//转换格式
		long judgeTime = System.currentTimeMillis()+ 7 * 24 * 60 * 60 * 1000;
		if(date1Time>judgeTime){
			return true;
		}
		if(StringUtils.isNotEmpty(date2)){
			long date2Time = DateUtil.parse(date2, "yyyy-MM-dd").getTime();//转换格式
			if(date2Time>judgeTime){
				return true;
			}
		}
		return false;
	}

举例解释:(当天是2022年8月1日)
1.参数:date1=2022-08-03,date2=2022-08-06
结果:false
2.参数:date1=2022-08-03,date2=2022-08-10
结果:true
3.参数:date1=2022-08-08,date2=2022-08-10
结果:true
4.参数:date1=2022-07-11,date2=2022-07-30
结果:false

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值