Java8 日期时间 —— LocalDate

https://howtodoinjava.com/java/date-time/localdatetime-to-date/

 

Java8的DateTimeFormatter是线程安全的,而SimpleDateFormat并不是线程安全。

获取 LocalDate 的方法

##1.获取当前的日期 LocalDate

LocalDate now = LocalDate.now();

##2.根据年月日的值获取 LocalDate

LocalDate.of(2016, 11, 30);

##3.根据某年的第n天获取 LocalDate

LocalDate.ofYearDay(2016, 300)

 

获取的数据

LocalDate.now().getYear(); // 年份  
	LocalDate.now().getMonthValue(); // 月份(数值表示, 从1开始)  
	LocalDate.now().getMonth(); // 月份(英文[enum]表示)  
	LocalDate.now().getDayOfMonth(); // 日期(从1开始)  
	LocalDate.now().getDayOfYear(): // 当天所在这一年的第几天(从1开始)  
	LocalDate.now().getDayOfWeek(); // 星期几  
	LocalDate.now().lengthOfYear(); // 当年的天数  
	LocalDate.now().lengthOfMonth(); //当月的天数  
	LocalDate.now().toEpochDay(); // 与时间纪元(1970年1月1日)相差的天数,负数表示在时间纪元之前多少天  

#四、运算

	可以对年、月、日、周进行加减法运算:
	如果加(或减)日期超过当月的最大天数(或小于等于0)则月份对应增加(或减少);
	如果加(或减)月份超过12(或小于等于0)则年份对应增加(或减少);
	加减周数其实是对日期(天数)的加减;
System.out.println("加法运算");  
	System.out.println("当前:" + LocalDate.now());  
	System.out.println("加1天:" + LocalDate.now().plusDays(1));  
	System.out.println("加1周:" + LocalDate.now().plusWeeks(1));  
	System.out.println("加1月:" + LocalDate.now().plusMonths(1));  
	System.out.println("加1年:" + LocalDate.now().plusYears(1));  

 

##2.减法

	System.out.println("减法运算");  
	System.out.println("当前:" + LocalDate.now());  
	System.out.println("减1天:" + LocalDate.now().minusDays(1));  
	System.out.println("减1周:" + LocalDate.now().minusWeeks(1));  
	System.out.println("减1月:" + LocalDate.now().minusMonths(1));  
	System.out.println("减1年:" + LocalDate.now().minusYears(1));  

##3.替换

	所有的数值必须合法;
	如果当月当天是闰年2月29日,替换年份为非闰年,则会变成2月28日;

	System.out.println("当前:" + LocalDate.now());  
	System.out.println("替换日期为1:" + LocalDate.now().withDayOfMonth(1));  
	System.out.println("替换天数为1:" + LocalDate.now().withDayOfYear(1));  
	System.out.println("替换月份为1:" + LocalDate.now().withMonth(1));  
	System.out.println("替换年份为1:" + LocalDate.now().withYear(1)); 

##五、判断

	可以对两个 LocalDate 进行比较,可以判断一个日期是否在另一个日期之前或之后,或者判断两个日期是否是同年同月同日。

	System.out.println("当天:" + LocalDate.now());  
	System.out.println("是否在当天之前:" + LocalDate.now().minusDays(1).isBefore(LocalDate.now()));  
	System.out.println("是否在当天之后:" + LocalDate.now().plusDays(1).isAfter(LocalDate.now()));  
	System.out.println("是否在当天:" + LocalDate.now().isEqual(LocalDate.now()));  
	System.out.println("今年是否是闰年:" + LocalDate.now().isLeapYear());  

 How to convert String to LocalDate

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d/MM/yyyy");

	String date = "16/08/2016";
	
	//convert String to LocalDate
	LocalDate localDate = LocalDate.parse(date, formatter);

How to convert LocalDate to String

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d/MM/yyyy");
LocalDate now = LocalDate.now();
String nowStr = now.format(formatter )

或者
//Create formatter
DateTimeFormatter FOMATTER = DateTimeFormatter.ofPattern("MM/dd/yyyy");
         
//Local date instance
LocalDate localDate = LocalDate.now();
 
//Get formatted String
String dateString = FOMATTER.format(localDate);
 
System.out.println(dateString);     //07/15/2018
//Create formatter
DateTimeFormatter FOMATTER = DateTimeFormatter.ofPattern("MM/dd/yyyy 'at' hh:mm a");
 
//Local date time instance
LocalDateTime localDateTime = LocalDateTime.now();
 
//Get formatted String
String ldtString = FOMATTER.format(localDateTime);
 
System.out.println(ldtString);      // 07/15/2018 at 02:49 PM
格式: yyyy-MM-dd HH:mm:ss
LocalDateTime  日期+时间

Convert between LocalDateTime to Date
 

import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
 
public class DateUtils {
 
    public static Date asDate(LocalDate localDate) {
        return Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
    }
 
    public static Date asDate(LocalDateTime localDateTime) {
        return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
    }
 
    public static LocalDate asLocalDate(Date date) {
        return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();
    }
 
    public static LocalDateTime asLocalDateTime(Date date) {
        return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime();
    }
}

使用LocalDateTime计算两个时间的差

https://howtodoinjava.com/java/date-time/java-time-localdate-class/

LocalDateTime now = LocalDateTime.now();
System.out.println("计算两个时间的差:");
LocalDateTime end = LocalDateTime.now();
Duration duration = Duration.between(now,end);
long days = duration.toDays(); //相差的天数
long hours = duration.toHours();//相差的小时数
long minutes = duration.toMinutes();//相差的分钟数
long millis = duration.toMillis();//相差毫秒数
long nanos = duration.toNanos();//相差的纳秒数
System.out.println(now);
System.out.println(end);
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值