Java日期转换
主要讨论常见的几个问题
//新建任意日期时间
//新建当前日期某个时间前的日期
//输出任意格式时间
//计算某两个日期之间间隔月,周,天,秒
//当前日期年的第几周/天,月的第几周/天
/* yyyy:年
MM:月
dd:日
hh:1~12小时制(1-12)
HH:24小时制(0-23)
mm:分
ss:秒
S:毫秒
E:星期几
D:一年中的第几天
F:一月中的第几个星期(会把这个月总共过的天数除以7)
w:一年中的第几个星期
W:一月中的第几星期(会根据实际情况来算)
a:上下午标识
k:和HH差不多,表示一天24小时制(1-24)。
K:和hh差不多,表示一天12小时制(0-11)。
z:表示时区 */
//新建任意日期 2022-09-27 11:06:03
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = simpleDateFormat.parse("2022-09-27 11:06:03");
log.info("date:" + date);//date:Tue Sep 27 11:06:03 CST 2022
//新建当前日期某个时间前的日期
//一小时前
//28天前
//10个月前
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY,calendar.get(Calendar.HOUR_OF_DAY)-1);
calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR)-28);
calendar.set(Calendar.MONTH,calendar.get(Calendar.MONTH)-10);
Date datec = calendar.getTime();
log.info("datec:"+datec);
calendar.add(Calendar.DAY_OF_YEAR,+1);
calendar.add(Calendar.MONTH,+1);
Date datec2 = calendar.getTime();
log.info("datec2:"+datec2);
//输出任意格式时间
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss.SSS w");
String formattime = simpleDateFormat1.format(System.currentTimeMillis());
log.info(formattime);
log.info("******************************");
//计算某两个日期之间间隔月,周,天,秒
Date datecal1 = simpleDateFormat.parse("2022-09-27 11:06:03");
Date datecal2 = simpleDateFormat.parse("2021-05-14 16:06:03");
LocalDate localDate1 = LocalDate.of(2022,9,27);
LocalDate localDate2 = LocalDate.of(2021,5,14);
Period next = Period.between(localDate2,localDate1);
long days = next.getDays();
long month = next.getMonths();
long years = next.getYears();
log.info("days:{},month:{},years:{}",days,month,years);
//date转换成localdate
/* Date date = new Date();
LocalDate localDate = date.toInstant()
.atZone(ZoneId.systemDefault()) //设置当前系统时区
.toLocalDate();
//localdate转换成date
LocalDate localDate = LocalDate.now();
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());*/
long time1 = datecal1.getTime();
long time2 = datecal2.getTime();
long subtract = time1-time2;
long days2 = subtract/(60*60*24);
log.info("******************************");
//当前日期年的第几周/天,月的第几周/天 2021-11-30T00:00:00.000Z
Calendar cal = Calendar.getInstance();
cal.set(2021,0,1);
int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
calendar.setFirstDayOfWeek(dayofweek);//calendar.setFirstDayOfWeek(Calendar.SATURDAY);周日为周第一天
int week = calendar.get(Calendar.WEEK_OF_YEAR);
int day = calendar.get(Calendar.DAY_OF_YEAR);
int mweek = calendar.get(Calendar.WEEK_OF_MONTH);
int mday = calendar.get(Calendar.DAY_OF_MONTH);
log.info("week:{},day:{},mweek{},mday{}",week,day,mweek,mday);