Java日期超出范围怎么改

Java日期超出范围怎么改,请知道的立刻回复一下,谢谢大家了,感谢大家

你这个问题能不能放上代码的截图,以及出现问题的日志截图等,这样大家才能更好的帮你啊!你直接一句话如何帮你

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7571260
  • 这篇博客你也可以参考下:JAVA笔记_时间日期类以及异常处理
  • 这篇博客也不错, 你可以看下JAVA笔记_时间日期类以及异常处理
  • 除此之外, 这篇博客: Java日期工具类,时间格式化,获取某天的最大时间,获取当前日期是一周中的第几天、星期几,日期计算-两个日期相加以及求差中的 分段代码示例 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    1、设置常用的公共的静态常量,代码段如下:

    	public static final String YYYY_MM_DD = "yyyy-MM-dd";
    
    	public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd";
    
    	public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
    
    	public static final SimpleDateFormat DATE_TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
    	public static final SimpleDateFormat UPPER_TIME_FORMAT = new SimpleDateFormat("HH:mm:ss");
    
    	public static final SimpleDateFormat LOWER_TIME_FORMAT = new SimpleDateFormat("hh:mm:ss");
    
    	public static final SimpleDateFormat CHAR_TIME_FORMAT = new SimpleDateFormat("hh小时mm分ss秒");
    
    	public static final int DAYS_OF_ONE_WEEK = 7;

     

    2、获得某天最大时间,例如: yyyy-MM-dd 23:59:59,代码段如下:

    	public static String getEndOfDay(Date date)
    	{
    		// 获取本地标准时间(本地默认的时区时间)
    		LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()),
    				ZoneId.systemDefault());
    		LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);
    		Date from = Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
    		String strDete = DateTimeUtils.DATE_TIME_FORMAT.format(from);
    		return strDete;
    	}

     

    3、获取当前日期是一周中的第几天、星期几,代码段如下:

    	public static long getWeekDay(Date today)
    	{
    
    		Calendar calendar = Calendar.getInstance();
    		calendar.setTime(today);
    		return calendar.get(Calendar.DAY_OF_WEEK);
    	}

     

    4、计算距离baseDate 若干天的 日期,例如:days=2 表示2天后的当前日期,days=-1 表示一天前的当前日期,代码段如下:

    	public static Date daysBetweenWeeks(Date baseDate, int days)
    	{
    		Calendar calendar = Calendar.getInstance();
    		if (baseDate != null)
    		{
    			calendar.setTime(baseDate);
    		}
    
    		calendar.add(Calendar.DAY_OF_MONTH, days);
    		return calendar.getTime();
    	}

     

    5、获取某个日期对应的周一的当前日期,如果入参为null的话,表示获取当前日期,代码段如下:

    	public static Date mondayOfThisWeek(Date date)
    	{
    		Calendar calendar = Calendar.getInstance();
    		if (date != null)
    		{
    			calendar.setTime(date);
    		}
    		// 获取周一
    		calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    		return calendar.getTime();
    	}

     

    6、获取上周一的当前日期,代码段如下:

    	public static Date lastMonday()
    	{
    		Date date = daysBetweenWeeks(null, -DAYS_OF_ONE_WEEK);
    		return mondayOfThisWeek(date);
    	}

     

    7、获取某个日期的 周日 日期,如果入参日期为 null 的话,表示获取当前日期的周日,注意:日历获取的周期是 周日,1,2,3,4,5,6 不是中国传统的 1,2,3,4,5,6,周日 所以要加7,代码段如下:

    	public static Date sundayOfThisWeek(Date date)
    	{
    		Calendar calendar = Calendar.getInstance();
    		if (date != null)
    		{
    			calendar.setTime(date);
    		}
    		// 获取周日
    		calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
    		// 获取 中国意义上的 周日
    		calendar.add(Calendar.DAY_OF_MONTH, 7);
    		if (getWeekDay(date) == 1)
    		{
    			calendar.add(Calendar.DATE, calendar.getFirstDayOfWeek() - 8);
    		}
    		return calendar.getTime();
    	}

     

    8、获取上周日的日期,代码段如下:

    	public static Date lastSunday()
    	{
    		Date date = daysBetweenWeeks(null, -DAYS_OF_ONE_WEEK);
    		return sundayOfThisWeek(date);
    	}

     

    9、字符串转换为日期类型,时间格式:YYYY_MM_DD,代码段如下:

    	public static Date stringToDate(String str)
    	{
    
    		try
    		{
    			SimpleDateFormat sdf = new SimpleDateFormat(YYYY_MM_DD);
    			return sdf.parse(str);
    		} catch (ParseException e)
    		{
    			e.printStackTrace();
    		}
    		return null;
    	}

     

    10、日期类型转换为字符串类型,字符串格式:YYYY_MM_DD,代码段如下:

    	public static String dateToString(Date date)
    	{
    		try
    		{
    			SimpleDateFormat sdf = new SimpleDateFormat(YYYY_MM_DD);
    			return sdf.format(date);
    		} catch (Exception e)
    		{
    			System.out.println(e.getMessage());
    		}
    		return date.toString();
    	}

     

    11、时间类型转换为日期类型,日期格式:YYYY:MM:DD hh:mm:ss --->YYYY:MM:DD,代码段如下:

    	public static Date timeToDate(Date date)
    	{
    		SimpleDateFormat sdf = new SimpleDateFormat(YYYY_MM_DD);
    		String str = sdf.format(date);
    		try
    		{
    			return sdf.parse(str);
    		} catch (ParseException e)
    		{
    			e.printStackTrace();
    		}
    		return null;
    	}

     

    12、获取某天当前周的周一的日期,代码段如下:

    	public static Date getThisWeekMonday(Date date)
    	{
    		Calendar calendar = Calendar.getInstance();
    		calendar.setTime(date);
    		// 获得当前日期是一个星期的第几天
    		int dayWeek = calendar.get(Calendar.DAY_OF_WEEK);
    		if (1 == dayWeek)
    		{
    			calendar.add(Calendar.DAY_OF_MONTH, -1);
    		}
    		calendar.setFirstDayOfWeek(Calendar.MONDAY);
    		int day = calendar.get(Calendar.DAY_OF_WEEK);
    		// 根据日历的规则,当前日期减去 星期几与一个星期第一天的差值 即可计算当前周期第一天
    		calendar.add(Calendar.DATE, calendar.getFirstDayOfWeek() - day);
    		return calendar.getTime();
    	}

     

    13、获取某天上周一的日期,代码段如下:

    	public static Date geLastWeekMonday(Date date)
    	{
    		Calendar calendar = Calendar.getInstance();
    		calendar.setTime(getThisWeekMonday(date));
    		calendar.add(Calendar.DATE, -7);
    		return calendar.getTime();
    	}

     

    14、获取某天下周一的日期,代码段如下:

    	public static Date getNextWeekMonday(Date date)
    	{
    		Calendar calendar = Calendar.getInstance();
    		calendar.setTime(getThisWeekMonday(date));
    		calendar.add(Calendar.DATE, 7);
    		return calendar.getTime();
    	}

     

    15、获取某天的前/后几天的日期,“+” 表示获取往后多少天的日期,“-” 表示获取往前多少天的日期,代码段如下:

    	public static Date addDay(Date date, int day)
    	{
    		Calendar calendar = Calendar.getInstance();
    		calendar.setTime(date);
    		calendar.add(Calendar.DATE, day);
    		return calendar.getTime();
    	}

     

    16、多个日期时间相加的,获得总的时长,代码段如下:

    	public Date plusDate(List<Date> dates)
    	{
    		int hour;
    		int minute;
    		int second;
    		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    		for (Date date : dates)
    		{
    			SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
    			String str = sdf.format(date);
    			String[] split = str.split(":");
    			hour += Integer.parseInt(split[0]);
    			minute += Integer.parseInt(split[1]);
    			second += Integer.parseInt(split[2]);
    		}
    		Calendar instance = Calendar.getInstance();
    		String s = simpleDateFormat.format(dates.get(0));
    		String[] split = s.split("-");
    		instance.set(Integer.parseInt(split[0]), Integer.parseInt(split[1]), Integer.parseInt(split[2]), hour, minute,
    				second);
    		return instance.getTime();
    
    	}

     

    17、获取初始化日期格式化,格式:yyyy-MM-dd,代码段如下:

    	public static Date dateFormatDate(Date date)
    	{
    		Date parse = null;
    		try
    		{
    			String strDate = DATE_FORMAT.format(date);
    			parse = DATE_FORMAT.parse(strDate);
    		} catch (ParseException e)
    		{
    			e.printStackTrace();
    		}
    		return parse;
    	}

     

    18、获取初始化日期格式化,格式:hh小时mm分ss秒,代码段如下:

    	public static Date dateFormatChar(Date date)
    	{
    		Date parse = null;
    		try
    		{
    			String strDate = CHAR_TIME_FORMAT.format(date);
    			parse = CHAR_TIME_FORMAT.parse(strDate);
    		} catch (ParseException e)
    		{
    			e.printStackTrace();
    		}
    		return parse;
    	}

     


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^