一个LocalDate
代表ISO
日历中的年-月-日,对于代表一个没有时间的日期很有用。你可以用LocalDate
来跟踪一个重要的事件,如出生日期或结婚日期。
这个类并不存储和表示时间或时区。相反,它是对日期的描述,可用于生日或假日。
LocalDate
类提供了很多处理本地日期的API/方法,所以在这篇文章中,我们将讨论几个重要的和经常使用的LocalDate
API/方法和例子。
为了更好地理解,让我们把这些方法分类为它们的用法,并举例加以说明。
static LocalDate now()
- 从默认时区的系统时钟中获取当前日期。static LocalDate now(Clock clock)
- 从指定的时钟获取当前日期。static LocalDate now(ZoneId zone)
- 从指定时区的系统时钟中获取当前日期。static LocalDate of(int year, int month, int dayOfMonth)
- 从年、月、日获得一个LocalDate的实例。static LocalDate of(int year, Month month, int dayOfMonth)
- 从年、月、日获取LocalDate的一个实例。Month getMonth()
- 使用Month枚举获得年月字段。int getMonthValue()
- 获取1至12的年月日字段。int getYear()
- 获得年字段。int getDayOfMonth()
- 获得月日字段。DayOfWeek getDayOfWeek()
- 获得星期的字段,它是一个枚举DayOfWeek。LocalDate plusDays(long daysToAdd)
- 返回该LocalDate的副本,并添加指定的天数。LocalDate plusMonths(long monthsToAdd)
- 返回此LocalDate的副本,并添加指定的月数。LocalDate plusWeeks(long weeksToAdd)
- 返回这个LocalDate的副本,并添加指定的周数。LocalDate plusYears(long yearsToAdd)
- 返回此LocalDate的副本,并添加指定的年数。boolean isAfter(ChronoLocalDate other)
- 检查此日期是否在指定日期之后。boolean isBefore(ChronoLocalDate other)
- 检查此日期是否在指定日期之前。boolean isEqual(ChronoLocalDate other)
- 检查此日期是否等于指定日期。int lengthOfMonth()
- 返回该日期所代表的月份的长度。int lengthOfYear()
- 返回此日期所代表的年的长度。boolean isLeapYear()
- 检查该年是否为闰年,根据ISO的闰年系统规则。static LocalDate parse(CharSequence text)
- 从文本字符串(如2007-12-03)中获得一个LocalDate的实例。static LocalDate parse(CharSequence text, DateTimeFormatter formatter)
- 从一个使用特定格式的文本字符串中获得一个LocalDate的实例。String format(DateTimeFormatter formatter)
- 使用指定的格式化器对该日期进行格式化。LocalDate
类提供了以下 API 来使用 LocalDate 类创建当前和特定日期。
static LocalDate now()
- 从默认时区的系统时钟中获取当前日期。static LocalDate now(Clock clock)
- 从指定的时钟获取当前日期。static LocalDate now(ZoneId zone)
- 从指定时区的系统时钟中获取当前日期。static LocalDate of(int year, int month, int dayOfMonth)
- 从年、月、日获取LocalDate的一个实例。static LocalDate of(int year, Month month, int dayOfMonth)
- 从年、月、日获取LocalDate的一个实例。import java.time.Clock;
import java.time.LocalDate;
import java.time.Month;
import java.time.ZoneId;
//*/*
/* Program to demonstrate LocalDate Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalDateExamples {
public static void main(String[] args) {
createLocalDate();
}
private static void createLocalDate() {
// Current date
LocalDate localDate = LocalDate.now();
System.out.println(localDate);
LocalDate localDate1 = LocalDate.now(Clock.systemDefaultZone());
System.out.println(localDate1);
LocalDate localDate3 = LocalDate.now(Clock.system(ZoneId.of("Indian/Cocos")));
System.out.println(localDate3);
// Specific date
LocalDate localDate2 = LocalDate.of(1991, Month.MARCH, 24);
System.out.println(localDate2);
LocalDate localDate5 = LocalDate.of(1991, 12, 24);
System.out.println(localDate5);
}
}
输出。
2018-08-10
2018-08-10
2018-08-10
1991-03-24
1991-12-24
LocalDate
类提供了以下API,分别用于获取年、月、日。
Month getMonth()
- 使用Month枚举来获取年月字段。int getMonthValue()
- 获得1到12的年月日字段。int getYear()
- 获得年字段。int getDayOfMonth()
- 获得月中的日期字段。DayOfWeek getDayOfWeek()
- 获得周天字段,是一个枚举DayOfWeek。int getDayOfYear()
- 获得年月日字段。import java.time.LocalDate;
//*/*
/* Program to demonstrate LocalDate Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalDateExamples {
public static void main(String[] args) {
getYearMonthDay();
}
private static void getYearMonthDay() {
LocalDate localDate = LocalDate.now();
System.out.println("Year : " + localDate.getYear());
System.out.println("Month : " + localDate.getMonth().getValue());
System.out.println("Day of Month : " + localDate.getDayOfMonth());
System.out.println("Day of Week : " + localDate.getDayOfWeek());
System.out.println("Day of Year : " + localDate.getDayOfYear());
}
}
输出。
Year : 2018
Month : 8
Day of Month : 10
Day of Week : FRIDAY
Day of Year : 222
LocalDate
类提供了以下API,用于向LocalDate添加或减去日、月、周和年。
LocalDate plusDays(long daysToAdd)
- 返回该LocalDate的副本,并添加指定的天数。LocalDate plusMonths(long monthsToAdd)
- 返回该LocalDate的副本,并添加指定的月数。LocalDate plusWeeks(long weeksToAdd)
- 返回此LocalDate的副本,并添加指定的周数。LocalDate plusYears(long yearsToAdd)
- 返回此LocalDate的副本,并添加指定的年数。import java.time.LocalDate;
//*/*
/* Program to demonstrate LocalDate Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalDateExamples {
public static void main(String[] args) {
addOrSubstractUsingLocalDate();
}
public static void addOrSubstractUsingLocalDate() {
LocalDate localDate = LocalDate.now();
// LocalDate's plus methods
System.out.println("Addition of days : " + localDate.plusDays(5));
System.out.println("Addition of months : " + localDate.plusMonths(15));
System.out.println("Addition of weeks : " + localDate.plusWeeks(45));
System.out.println("Addition of years : " + localDate.plusYears(5));
// LocalDate's minus methods
System.out.println("Subtraction of days : " + localDate.minusDays(5));
System.out.println("Subtraction of months : " + localDate.minusMonths(15));
System.out.println("Subtraction of weeks : " + localDate.minusWeeks(45));
System.out.println("Subtraction of years : " + localDate.minusYears(5));
}
}
输出。
Addition of days : 2018-08-15
Addition of months : 2019-11-10
Addition of weeks : 2019-06-21
Addition of years : 2023-08-10
Subtraction of days : 2018-08-05
Subtraction of months : 2017-05-10
Subtraction of weeks : 2017-09-29
Subtraction of years : 2013-08-10
LocalDate
类提供了以下API来比较Java中的LocalDate
对象。
boolean isAfter(ChronoLocalDate other)
- 检查此日期是否在指定日期之后。boolean isBefore(ChronoLocalDate other)
- 检查此日期是否在指定日期之前。boolean isEqual(ChronoLocalDate other)
- 检查此日期是否等于指定的日期。import java.time.LocalDate;
import java.time.Month;
//*/*
/* Program to demonstrate LocalDate Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalDateExamples {
public static void main(String[] args) {
compareLocalDate();
}
private static void compareLocalDate() {
LocalDate localDate1 = LocalDate.now();
LocalDate localDate2 = LocalDate.of(2017, Month.MAY, 14);
LocalDate localDate3 = LocalDate.of(2016, Month.MAY, 15);
// isEqual() example
if (localDate1.isEqual(localDate2)) {
System.out.println("localDate1 and localDate2 are equal");
} else {
System.out.println("localDate1 and localDate2 are not equal");
}
// ifAfter() example
if (localDate2.isAfter(localDate3)) {
System.out.println("localDate2 comes after localDate3");
}
// isBefore() example
if (localDate3.isBefore(localDate1)) {
System.out.println("localDate3 comes before localDate1");
}
}
}
输出。
localDate1 and localDate2 are not equal
localDate2 comes after localDate3
localDate3 comes before localDate1
LocalDate
类提供了以下API,用于从LocalDate中获取月或年的天数。
int lengthOfMonth()
- 返回该日期所代表的月的长度。int lengthOfYear()
- 返回此日期所代表的年的长度。import java.time.LocalDate;
import java.time.Month;
//*/*
/* Program to demonstrate LocalDate Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalDateExamples {
public static void main(String[] args) {
getDaysFromMonthAndYear();
}
private static void getDaysFromMonthAndYear() {
LocalDate localDate1 = LocalDate.of(2017, Month.JANUARY, 1);
LocalDate localDate2 = LocalDate.of(2016, Month.FEBRUARY, 1);
// Number of days in a month
System.out.println("Number of days in " + localDate1.getMonth() + " : " + localDate1.lengthOfMonth());
System.out.println("Number of days in " + localDate2.getMonth() + " : " + localDate2.lengthOfMonth());
// Number of days in a year
System.out.println("Number of days in " + localDate1.getYear() + " : " + localDate1.lengthOfYear());
System.out.println("Number of days in " + localDate2.getYear() + " : " + localDate2.lengthOfYear());
}
}
输出。
Number of days in JANUARY : 31
Number of days in FEBRUARY : 29
Number of days in 2017 : 365
Number of days in 2016 : 366
LocalDate
类提供了以下API来检查一个给定的年份是否是闰年。
boolean isLeapYear()
- 检查该年是否是闰年,根据ISO的闰年系统规则。package com.ramesh.java8.datetime.api;
import java.time.LocalDate;
import java.time.Month;
//*/*
/* Program to demonstrate LocalDate Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalDateExamples {
public static void main(String[] args) {
checkIfYearIsLeapYear();
}
private static void checkIfYearIsLeapYear() {
LocalDate localDate1 = LocalDate.of(2017, Month.JANUARY, 1);
LocalDate localDate2 = LocalDate.of(2016, Month.JANUARY, 1);
if (localDate1.isLeapYear()) {
System.out.println(localDate1.getYear() + " is a leap year");
} else {
System.out.println(localDate1.getYear() + " is not a leap year");
}
if (localDate2.isLeapYear()) {
System.out.println(localDate2.getYear() + " is a leap year");
} else {
System.out.println(localDate2.getYear() + " is not a leap year");
}
}
}
输出。
2017 is not a leap year
2016 is a leap year
LocalDate
类提供了以下API,用于在Java中从字符串转换为LocalDate。
static LocalDate parse(CharSequence text)
- 从文本字符串(如2007-12-03)中获得一个LocalDate的实例。static LocalDate parse(CharSequence text, DateTimeFormatter formatter)
- 使用特定的格式从文本字符串中获取LocalDate的实例。package com.ramesh.java8.datetime.api;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
//*/*
/* Program to demonstrate LocalDate Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalDateExamples {
public static void main(String[] args) {
convertStringToLocalDate();
}
private static void convertStringToLocalDate() {
// ISO Date
LocalDate localDate = LocalDate.parse("2017-05-03", DateTimeFormatter.ISO_LOCAL_DATE);
System.out.println(localDate);
// yyyy/MM/dd pattern
LocalDate localDate1 = LocalDate.parse("2017/05/12", DateTimeFormatter.ofPattern("yyyy/MM/dd"));
System.out.println(localDate1);
// MMM dd, yyyy pattern
LocalDate localDate2 = LocalDate.parse("May 05, 2017", DateTimeFormatter.ofPattern("MMM dd, yyyy"));
System.out.println(localDate2);
// dd-MMM-yyyy pattern
LocalDate localDate3 = LocalDate.parse("12-Jan-2017", DateTimeFormatter.ofPattern("dd-MMM-yyyy"));
System.out.println(localDate3);
// dd-LL-yyyy pattern
LocalDate localDate4 = LocalDate.parse("12-01-2017", DateTimeFormatter.ofPattern("dd-LL-yyyy"));
System.out.println(localDate4);
}
}
输出。
2017-05-03
2017-05-12
2017-05-05
2017-01-12
2017-01-12
LocalDate
类提供了以下API,可以在Java中把LocalDate转换为String。
String format(DateTimeFormatter formatter)
- 使用指定的格式化器对该日期进行格式化。package com.ramesh.java8.datetime.api;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
//*/*
/* Program to demonstrate LocalDate Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalDateExamples {
public static void main(String[] args) {
convertLocalDatetoString();
}
private static void convertLocalDatetoString() {
// ISO Date
LocalDate localDate = LocalDate.now();
DateTimeFormatter dateFormatter = DateTimeFormatter.ISO_LOCAL_DATE;
System.out.println(localDate.format(dateFormatter));
// yyyy/MM/dd pattern
DateTimeFormatter dateFormatter1 = DateTimeFormatter.ofPattern("yyyy/MM/dd");
System.out.println(localDate.format(dateFormatter1));
// MMMM dd, yyyy pattern
DateTimeFormatter dateFormatter2 = DateTimeFormatter.ofPattern("MMMM dd, yyyy");
System.out.println(localDate.format(dateFormatter2));
// dd-MMM-yyyy pattern
DateTimeFormatter dateFormatter3 = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
System.out.println(localDate.format(dateFormatter3));
// dd-LL-yyyy pattern
DateTimeFormatter dateFormatter4 = DateTimeFormatter.ofPattern("dd-LL-yyyy");
System.out.println(localDate.format(dateFormatter4));
}
}
输出。
2018-08-10
2018/08/10
August 10, 2018
10-Aug-2018
10-08-2018
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.javaguides.net/2018/08/java-8-localdate-class-api-guide.html
内容来源于网络,如有侵权,请联系作者删除!