LocalDate
不变性:新的日期/时间API中,所有的类都是不可变的,这对多线程环境有好处。
LocalDate localDate = LocalDate.now(); //获取当前日期
LocalDate localDate = LocalDate.of(1999,12,31); //获取日期
LocalDate localDate2=localDate.plusDays(1000);
//plusDays是一个访问器方法,即他不改变原本的对象,而是创造一个新的对象。与之对应的是更改器方法,即会改变原本的对象。
Instant instant = Instant.now(); //获取当前时间戳
LocalTime localTime = LocalTime.now(); //获取当前时刻
LocalDateTime localDateTime = LocalDateTime.now(); //获取当前具体时间
ZonedDateTime zonedDateTime = ZonedDateTime.now(); //获取带有时区的时间
String str = "2019-01-11";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate2 = LocalDate.parse(str, formatter);
getYear() int 获取当前日期的年份
getMonth() Month 获取当前日期的月份对象
getMonthValue() int 获取当前日期是第几月
getDayOfWeek() DayOfWeek 表示该对象表示的日期是星期几
getDayOfMonth() int 表示该对象表示的日期是这个月第几天
getDayOfYear() int 表示该对象表示的日期是今年第几天
withYear(int year) LocalDate 修改当前对象的年份
withMonth(int month) LocalDate 修改当前对象的月份
withDayOfMonth(intdayOfMonth) LocalDate 修改当前对象在当月的日期
isLeapYear() boolean 是否是闰年
lengthOfMonth() int 这个月有多少天
lengthOfYear() int 该对象表示的年份有多少天(365或者366)
plusYears(longyearsToAdd) LocalDate 当前对象增加指定的年份数
plusMonths(longmonthsToAdd) LocalDate 当前对象增加指定的月份数
plusWeeks(longweeksToAdd) LocalDate 当前对象增加指定的周数
plusDays(longdaysToAdd) LocalDate 当前对象增加指定的天数
minusYears(longyearsToSubtract) LocalDate 当前对象减去指定的年数
minusMonths(longmonthsToSubtract) LocalDate 当前对象减去注定的月数
minusWeeks(longweeksToSubtract) LocalDate 当前对象减去指定的周数
minusDays(longdaysToSubtract) LocalDate 当前对象减去指定的天数
compareTo(ChronoLocalDateother) int 比较当前对象和other对象在时间上的大小,返回值如果为正,则当前对象时间较晚,
isBefore(ChronoLocalDateother) boolean 比较当前对象日期是否在other对象日期之前
isAfter(ChronoLocalDateother) boolean 比较当前对象日期是否在other对象日期之后
isEqual(ChronoLocalDateother) boolean 比较两个日期对象是否相等
示例:
package my;
import java.time.DayOfWeek;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class Test
{
public static void main(String[] args)
{
LocalDate date=LocalDate.now();
int year=date.getYear();
int month=date.getMonthValue();
int today=date.getDayOfMonth();
date=date.minusDays(today-1);
DayOfWeek weekday=date.getDayOfWeek();
int value=weekday.getValue();
System.out.println("Mon Tue Wed Thu Fri Sat Sun");
for(int i =0; i<=value;i++)
System.out.print(" ");
while(date.getMonthValue()==month)
{
System.out.printf("%3d",date.getDayOfMonth());
if(date.getDayOfMonth()==today)
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
date=date.plusDays(1);
if(date.getDayOfWeek().getValue()==1) System.out.println(" ");
}
if(date.getDayOfWeek().getValue()!=1) System.out.println();
}
}