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