java8日期

Java 8中有一个叫LocalDate的类,它能用来表示今天的日期
LocalDate today = LocalDate.now();
int year = today.getYear();
int month = today.getMonthValue();
int day = today.getDayOfMonth();


获取某个特定的日期


LocalDate dateOfBirth = LocalDate.of(2010, 01, 14);




检查两个日期是否相等


LocalDate date1 = LocalDate.of(2014, 01, 14); 
if(date1.equals(today)){


}


检查重复事件,比如说生日


MonthDay表示的是某个重复出现的日子
LocalDate dateOfBirth = LocalDate.of(2010, 01, 14);
MonthDay birthday = MonthDay.of(dateOfBirth.getMonth(), dateOfBirth.getDayOfMonth());
MonthDay currentMonthDay = MonthDay.from(today);
if(currentMonthDay.equals(birthday)){
  System.out.println("birthday!!");
}else{
  System.out.println("not birthday!!");
}


获取当前时间


LocalTime time = LocalTime.now();


增加时间里面的小时数


LocalTime time = LocalTime.now();
LocalTime newTime = time.plusHours(2); 


获取1周后的日期


LocalDate nextWeek = today.plus(1, ChronoUnit.WEEKS);


一年前后的日期




LocalDate previousYear = today.minus(1, ChronoUnit.YEARS);
System.out.println("Date before 1 year : " + previousYear);
LocalDate nextYear = today.plus(1, YEARS);
System.out.println("Date after 1 year : " + nextYear);


判断某个日期是在另一个日期的前面还是后面


LocalDate tomorrow = LocalDate.of(2014, 1, 15); 、if(tommorow.isAfter(today)){
 System.out.println("Tomorrow comes after today");
}


LocalDate yesterday = today.minus(1, DAYS);
if(yesterday.isBefore(today)){
}


处理不同的时区




LocalDateTime localtDateAndTime = LocalDateTime.now();
ZonedDateTime dateAndTimeInNewYork = ZonedDateTime.of(localtDateAndTime, america );


表示固定的日期,比如信用卡过期时间


YearMonth又是另一个组合,它代表的是像信用卡还款日,定期存款到期日,options到期日这类的日期
YearMonth currentYearMonth = YearMonth.now(); System.out.printf("Days in month year %s: %d%n", currentYearMonth, currentYearMonth.lengthOfMonth());
YearMonth creditCardExpiry = YearMonth.of(2018, Month.FEBRUARY);
System.out.printf("Your credit card expires on %s %n", creditCardExpiry);


检查闰年


if(today.isLeapYear())


两个日期之间包含多少天,多少个月


LocalDate java8Release = LocalDate.of(2014, Month.MARCH, 14);
Period periodToNextJavaRelease =Period.between(today, java8Release);
System.out.println("Months left between today and Java 8 release : " + periodToNextJavaRelease.getMonths() );


如何获取当前时间戳


Instant timestamp = Instant.now();




使用预定义的格式器来对日期进行解析/格式化


String dayAfterTommorrow = "20140116";
LocalDate formatted = LocalDate.parse(dayAfterTommorrow,DateTimeFormatter.BASIC_ISO_DATE);


自定义的格式器来解析日期


String goodFriday = "Apr 18 2014";
try {
  DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd yyyy");
  LocalDate holiday = LocalDate.parse(goodFriday, formatter);
  System.out.printf("Successfully parsed String %s, date is %s%n", goodFriday, holiday);
} catch (DateTimeParseException ex) {
  System.out.printf("%s is not parsable!%n", goodFriday);
  ex.printStackTrace();
}


对日期进行格式化,转换成字符串


LocalDateTime arrivalDate = LocalDateTime.now();
try{
  DateTimeFormatter format = DateTimeFormatter.ofPattern("MMM dd yyyy hh:mm a");
  String landing = arrivalDate.format(format);
  System.out.printf("Arriving at : %s %n", landing);
} catch (DateTimeException ex) {
  System.out.printf("%s can't be formatted!%n", arrivalDate);
  ex.printStackTrace();
}


Date转localDate


Date date=new Date();
LocalDate localDate=LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toLocalDate();


localDate转Date


LocalDate localDate=LocalDate.now();
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
localDateTime转Date
Date start=Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant());
获取本月月初(带时分秒)
LocalDateTime startTime=LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()),LocalTime.MIN);
获取本月月末(带时分秒)
 LocalDateTime endTime=LocalDateTime.of(LocalDate.now().with(TemporalAdjusters.lastDayOfMonth()),LocalTime.MAX);


只获取本月月初和月末日期(不带时分秒 )
LocalDate.now().with(TemporalAdjusters.firstDayOfMonth())
LocalDate.now().with(TemporalAdjusters.lastDayOfMonth())




获取两个日期之间的日期
ChronoUnit.DAYS.between(LocalDate.now(),LocalDate.of(2017,8,20));
LocalDate nowDate=LocalDate.now(); LocalDate create=LocalDate.of(2017,7,10); Long daysBetween=nowDate.toEpochDay()-create.toEpochDay()+1;


string转LocalDateLocalDate date=LocalDate.parse("20170713",DateTimeFormatter.ofPattern("yyyy-MM-dd"));DateTimeFormatter f = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");//时间转为字符串LocalDateTime date =LocalDateTime.now(); String str = date.format(f); // 2014-11-07 14:10:36 //字符串转为时间 date = LocalDateTime.parse(str,f);

1.获取本周第一天
LocalDate nowDate = LocalDate.now();
LocalDate first = nowDate.with(DayOfWeek.MONDAY);
LocalDateTime start = LocalDateTime.of(nowDate.with(DayOfWeek.MONDAY),LocalTime.MIN);

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值