admin 管理员组

文章数量: 1184232

【java】时间格式相关

时间相关

  • 时间格式
    • 1.改变日期(yyyy-MM-dd)增减天数
    • 2.不熟悉的格式转换
    • 3.带有时区
    • 4.判断一个日期是否在一个特定范围
    • 5.判断是否在7天之后

时间格式

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.SSSZresult= 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

本文标签: java时间格式相关