在java中,除了String字符串、int数字类型、double浮点类型,还有一个不太常见但是却也很使用的LocalDate日期类型,这是java8版本才推出的。对于LocalDate日期类型这种工具类,虽然不需要熟练掌握,但是学习它的一些常用用法对于我们日常的一些学习和工作开发都是很有必要的,下面将以代码示例的形式给大家介绍日期类型LocalDate的一些常用用法。
日期时间LocalDate转化为字符串
import java.time.LocalDate;
public class DateTest {
public static void main(String[] args) {
// 得到当前的完整时间
LocalDate now = LocalDate.now();
// 打印出时间
System.out.println(now.toString());
}
}
这里的now方法执行后返回的当前程序所在程序所在计算机的系统时间,运行后发现,刚才时间输出的内容格式类似是这样的20201-02-07,实际上这是java语言中LocalDate格式默认格式,所以如果我们想得到类似“----年–月--日”、“--------”等这种自定义的时间格式又该如何操作呢?
这时候我们就需要借助一个日期格式化类来帮助我们做格式化,这个类就是DateTimeFormatter,它的完整包路径是java.time.format.DateTimeFormatter,具体代码如下:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateTest5 {
public static void main(String[] args) {
LocalDate time = LocalDate.now();
// 打印默认的时间数据
System.out.println(time.toString());
// 创建一个格式化方式,想用什么格式就在这里表示出来,
//注意这里的格式yyyy-MM-dd,这个格式的字母是固定的,字符之外的
//符是可以更换的
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy年MM月dd");
// 执行时间的格式化处理,得到期望格式的时间字符串
String timeStr = df.format(time);
// 打印时间的格式就是----年--月--
System.out.println(timeStr);
}
}
获取日期时间具体的值
import java.time.LocalDate;
public class DateTest7 {
public static void main(String[] args) {
LocalDate time = LocalDate.now();
// 得到当前时间所在年
int year = time.getYear();
System.out.println("当前年份 " + year);
// 得到当前时间所在月
int month = time.getMonth().getValue();
System.out.println("当前月份 " + month);
// 得到当前时间在这个月中的天数
int day = time.getDayOfMonth();
System.out.println("当前日 " + day);
// 得到当前时间所在星期数
int dayOfWeek = time.getDayOfWeek().getValue();
System.out.println("当前星期 " + dayOfWeek);
}
}
PS:getMonth()和getDayOfWeek()方法的返回值不是具体的数字,而是一个对象,所以必须用getValue()得到一个具体的数字,这个是java官方的设计,具体你可以去查阅jjava的官方文档,学日期时间LocalDate类的底层实现。
字符串转化为日期时间LocalDate
import java.time.LocalDate;
public class DateTest8 {
public static void main(String[] args) {
// 定义一个时间字符串,日期是2019年1月1日
String date = "2019-01-01";
// 把字符串转化位 LocalDate 对象,并得到字符串匹配的日期
LocalDate date2 = LocalDate.parse(date);
// 打印出日期
System.out.println(date2.toString());
}
}
如上代码,LocalDate.parse(date)这个parse方法可以把日期字符串转化为日期类型,前提是这个字符串必须是yyyy-MM-dd类型的,比如说2019年2月1日就应该是2019-02-01,而不是2019-2-1。
当然如果日期字符串的格式不是yyyy-MM-dd,那么就要借助DateTimeFormatter,比如:
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateTest81 {
public static void main(String[] args) {
// 定义一个时间字符串,日期是2019年1月1日
String date = "2019/01/01";
//这里设置格式化方式,要和待转化的字符串的格式相同
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy/MM/dd");
// 把字符串转化位 LocalDate 对象,并得到字符串匹配的日期
LocalDate date2 = LocalDate.parse(date,df);
// 打印出日期
System.out.println(date2.toString());
}
}
时间日期的计算
import java.time.LocalDate;
public class DateTest10 {
public static void main(String[] args) {
LocalDate now = LocalDate.now();
System.out.println("当前:" + now.toString());
System.out.println("加法运算");
System.out.println("加1天:" + now.plusDays(1));
System.out.println("加1周:" + now.plusWeeks(1));
System.out.println("加1月:" + now.plusMonths(1));
System.out.println("加1年:" + now.plusYears(1));
System.out.println("减法运算");
System.out.println("减1天:" + now.minusDays(1));
System.out.println("减1周:" + now.minusWeeks(1));
System.out.println("减1月:" + now.minusMonths(1));
System.out.println("减1年:" + now.minusYears(1));
}
}
两个日期时间的判断
import java.time.LocalDate;
public class DateTest11 {
public static void main(String[] args) {
LocalDate now = LocalDate.now();
// 可以对两个 LocalDate 进行比较,
// 可以判断一个日期是否在另一个日期之前或之后,
// 或者判断两个日期是否是同年同月同日。
boolean isBefore = now.minusDays(1).isBefore(LocalDate.now());
System.out.println("是否在当天之前:" + isBefore);
boolean isAfter = now.plusDays(1).isAfter(LocalDate.now());
System.out.println("是否在当天之后:" + isAfter);
// 判断是否是当天
boolean sameDate = now.isEqual(LocalDate.now());
System.out.println("是否在当天:" + sameDate);
}
}```