获取本年/月/周的第一天
旧API
通过Calendar设置
Calendar.HOUR_OF_DAY
Calendar.DAY_OF_YEAR
Calendar.DAY_OF_MONTH
Calendar.DAY_OF_WEEK
Calendar.DAY_OF_WEEK_IN_MONTH
//当前日期本月第一天
Calendar calendar = Calendar.getInstance(); //获取当前日期
calendar.set(Calendar.DAY_OF_MONTH, 1);
Date time = calendar.getTime();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
String firstDayOfMonth = simpleDateFormat.format(time);
System.out.println(firstDayOfMonth);//2023-03-01 09:22:29:016
新API
TemporalAdjusters.firstDayOfMonth
TemporalAdjusters.firstDayOfYear
//返回后一个/前一个给定的星期几,如果这个值满足条件,直接返回
TemporalAdjusters.nextOrSame
TemporalAdjusters.previousOrSame
返回当月/年第一天
LocalDate localDate = LocalDate.now().with(TemporalAdjusters.firstDayOfMonth());
String firstDayOfMonth = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(localDate);
System.out.println(firstDayOfMonth); //2023-03-01
返回距今天最近的上/下周一,如果今天时周一就返回今天
LocalDate localDate = LocalDate.now().with(TemporalAdjusters.nextOrSame(DayOfWeek.FRIDAY)); //TemporalAdjusters.previousOrSame(DayOfWeek.FRIDAY) //上周五
String firstDayOfMonth = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(localDate);
System.out.println(firstDayOfMonth); //2023-03-17
在当前日期基础上加/减日期
旧API
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, 3); //加三天
//calendar.add(Calendar.DATE, -3); //减三天
Date time = calendar.getTime();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
String format = simpleDateFormat.format(time);
System.out.println(format);
新API
LocalDate localDate = LocalDate.now().plus(3, ChronoUnit.DAYS); //加三天
// LocalDate.now().minus(3, ChronoUnit.DAYS);//减三天
String nextThreeDay = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(localDate);
System.out.println(nextThreeDay);
获取当前时间戳
旧API
long currentTimeMillis = System.currentTimeMillis();
System.out.println(currentTimeMillis);
新API
long epochMilli = Instant.now().toEpochMilli();
System.out.println(epochMilli);
获取指定时间戳的日期
旧API
设置时间戳
long epochMilli = Instant.now().toEpochMilli();
System.out.println(epochMilli);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(epochMilli); //设置时间戳
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
String format = simpleDateFormat.format(calendar.getTime());
System.out.println(format);
设置年月日
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hours);
calendar.set(Calendar.MINUTE, minutes);
calendar.set(Calendar.SECOND, seconds);
Date tim = calendar.getTime();
获取年月日
Calendar date = Calendar.getInstance();
int y = date.get(Calendar.YEAR);
int m = date.get(Calendar.MONTH);
int d = date.get(Calendar.DAY_OF_MONTH);
新API
设置时间戳
Instant instant = Instant.ofEpochMilli(currentTimeMillis);
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.of("+8"));
System.out.println(offsetDateTime);
设置年月日
LocalDateTime time = LocalDateTime.of(2019, 12, 26, 12, 11, 34);
获取年月日时分秒
LocalDateTime now = LocalDateTime.now();
int year = now.getYear();
Month month = now.getMonth();
int dayOfMonth = now.getDayOfMonth();
int hour = now.getHour();
获取本月有几天/今天是这个月第几天
旧API
GregorianCalendar calendar = new GregorianCalendar();
int maximum = calendar.getMaximum(Calendar.DAY_OF_MONTH); //这个月最大天数
System.out.println(maximum);
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); //今天是这个月的第几天
System.out.println(dayOfMonth);
新API
int dayOfMonth = LocalDateTime.now().getDayOfMonth();
System.out.println(dayOfMonth);