LocalDate与LocalTime

本文深入解析Java中的新日期/时间API特性,强调其不变性带来的多线程优势。详述了LocalDate、LocalTime、LocalDateTime等类的使用方法,包括日期时间的获取、解析、格式化及各种操作如加减日期。同时,介绍了如何获取当前时间戳、带时区的时间,以及日期比较和修改等实用功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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或者366plusYears(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();
		
	}
}

LocalTime

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值