常用日期API

214 阅读1分钟

获取本年/月/周的第一天

旧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);