日期和时间

本文介绍了Java中处理日期和时间的方法,包括Date类的使用,获取时间毫秒值,以及SimpleDateFormat类如何格式化和解析日期。还探讨了Calendar类进行日期操作和JDK8引入的新日期时间API,如LocalDate、LocalDateTime、Instant和DateTimeFormatter,这些新API提供了更强大和安全的日期时间处理功能。

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

java中的日期和时间的表达
1、Date
1)Date类概述
Date类的对象在java中代表的是当前附所在系统的此刻日期时间。
Date d=new Date ();


2)Date 构造器    public Date();
创建一个Date对象代表的是系统当前此刻日期时间
3)Date的常用方法
pubbic long getTime( );        long time=d.getTimel();
获取时间对象的毫秒值。
4)Date类记录时间的2种形式
形式1:日期对象
//会建一个日期对象代表了:当前系统的此日期时间对象
Date d=new Date ();
System.out.println(a);
形式2:时间毫秒值
指的是从1970年1月1日00:00:00走到此刻的毫秒教
//2、获取当前时间毫秒值
long time=d.getTime();
sustem.out.println(Time);

package d1_date;

import java.util.Date;

/**
    目标:学会使用Date类处理对象,获取时间信息
 */
public class DateDemo1 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		1、创建一个Date类的对象,代表系统此刻日期时间对象
		Date d=new Date();
		System.out.println(d);
		
//		2、获取时间毫秒值
		long time=d.getTime();
		System.out.println(time);
		long time1=System.currentTimeMillis();
		System.out.println(time1);

		
		System.out.println("-------------------");
//		1、得到当前时间毫秒值
		Date d1=new Date();
		System.out.println(d1);
		
//		2、当前时间往后走 1小时121秒
		long time2=System.currentTimeMillis();
		time2+=(60*60+121)*1000;
		
//		3、把时间毫秒值换成对应的日期对象
//		Date d2=new Date(time2);
//		System.out.println(d2);
		
		Date d3=new Date();
		d3.setTime(time2);
		System.out.println(d3);
	}

}

2、SimpleDateFormat

1)SimpleDateFormat类作用
①可以对Date 对象或时间毫秒伯格各或化成我们的喜欢的时间形式
②也可以把字符串的时间形式解析成日期对象
2)SimpleDateFormat的构造器
①public SimpleDateFormat()
构造一个SimpleDateFormat,使用默认格式
③pubic SimpleDatefFormat IString patten)
构造一个SimpleDateFormat,使用指定格式
3)SimpleDateFormat的格式化方法
 public final String format (Date date)
将日期格式化日期/时间字符串
public final String format (Object time)
将时间毫秒值格式的成日期/时间字符串
4)SimpleDateformat解析字符串时间为日期对象
public Date parse(String source)  从给定字符串的开始解析文本生成日期

注:形式必须与被解析时间的形式完全一样,否则会报错!

package d2_simpledateformat;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatDemo2 {

	public static void main(String[] args)throws ParseException {
		// TODO Auto-generated method stub
//目标:学会使用SimpleDateFormat解析字符串时间成为日期对象
//		有一个时间2023年01月14日 11:11:11 往后 7天14小时49分06秒后的时间是多少
//		1、把字符串时间拿到程序中来
		String dateStr="2023年01月14日 11:11:11";
		
//		2、把字符串时间解析成日期对象(本节课重点):形式必须与被解析时间的形式完全一样,否则运行时解析错误!
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		Date d=sdf.parse(dateStr);
//		3、往后走7天14小时49分06秒
		long time=d.getTime()+(7L*24*60*60+14*60*60+49*60+6)*1000;
		System.out.println(sdf.format(time));
		

3、Calendar
1) Calendar 概述
1>Calender代表了系统此刻日期对应的日历对象.
2>Calendar  是一个抽象类,不能直接创建对象
2)Calendar  日历类创建日历对象的方法
方法名:public  static Calender getInstance()
说明:获取当前日历对象

3)Calendar   常用方法
1> public int get (int field)
取日期中的某个字段信息
2> public void set (init  field,int value)
修改日历的某个字段信息
3>public void add (int field,int amount)
为某个字段增加/减少指定值
4>public final Date getTime()
拿到此刻日期对象
⑤ public long getTimenMillis()
拿到此刻时间毫秘值
注:Calendar是可变日期对象,一旦修改后其对复本身表示的时间将产生变化

JDK8新增日期类JDK8新增日期类Date
概述:
从Java8开始,java.time包提供了新行的日期和时间API,主要涉及的类型有:
 LoalDate:不包含具体时间的日期
LocalDateTime:不包含日期的时间
LocalDateTime:包含了日期及时间
Instant:代表的是时间戳
DateTimeFormatter 用于做时间的格式化和解析的
Duration:用于计算两个“时间“间隔
Periond:用于计算两个”日期”间隔
①新增的API严格区分了时刻,本地日期本地时间并且,对日期和时间进行运算更加方便
②其次,新API的类型几平全部是不变型(和String的使用类似),可以放心使用不必担心被修改.

package d4_jdk8_time;

import java.time.LocalDate;

public class Demo01LocalDate {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//       1、获取本地日期对象
		LocalDate nowDate=LocalDate.now();
		System.out.println("今天的日期:"+nowDate);//今天的日期
        
		int year=nowDate.getYear();
		System.out.println("年:"+year);
		int month=nowDate.getMonthValue();
		System.out.println("月:"+month);
		int day=nowDate.getDayOfMonth();
		System.out.println("日:"+day);
		
//		当年的第几天
		int dayofYear=nowDate.getDayOfYear();
		System.out.println("dayofYear:"+dayofYear);
		
//		星期
		System.out.println(nowDate.getDayOfWeek());//TUESDAY
		System.out.println(nowDate.getDayOfWeek().getValue());//2
//		月份
		System.out.println(nowDate.getMonth());
		System.out.println(nowDate.getMonth().getValue());
		
		System.out.println("--------------------------------------");
		LocalDate bt=LocalDate.of(2023, 1, 20);
		System.out.println(bt);//直接传入对应的年月日
		
	}

}
package d4_jdk8_time;

import java.time.LocalDateTime;
import java.time.LocalTime;

public class Demo03LocalDateTime {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
LocalDateTime nowDateTime=LocalDateTime.now();
System.out.println(nowDateTime);
System.out.println(nowDateTime.toLocalDate());
LocalTime ldt=nowDateTime.toLocalTime();
System.out.println(ldt.getHour());
	}

}
package d4_jdk8_time;

import java.time.LocalDate;
import java.time.MonthDay;

public class Demo04UpdateTime {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//判断今天是否是你的生日
		LocalDate birthDay=LocalDate.of(1999,10, 29);
		LocalDate nowDay=LocalDate.now();
		 
		MonthDay birMd=MonthDay.of(birthDay.getMonthValue(), birthDay.getDayOfMonth());
		MonthDay nowMd=MonthDay.of(nowDay.getMonthValue(), nowDay.getDayOfMonth());
		
		System.out.println("今天是你的生日吗?"+birMd.equals(nowMd));//今天是你的生日吗?false
	}

}
package d4_jdk8_time;

import java.time.Instant;
import java.time.ZoneId;
import java.util.Date;

public class Demo05Instsnt {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		1、得到一个Instant时间戳对象
		Instant instant=Instant.now();
		System.out.println(instant);
		
//		2、系统此刻的时间戳这么办?
		System.out.println(instant.atZone(ZoneId.systemDefault()));
		
//		3、如何去返回Date对象
		Date date=Date.from(instant);
		System.out.println(date);
		
	    instant =date.toInstant();
	    System.out.println(instant);
		

	}

}
package d4_jdk8_time;

import java.text.ParseException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Demo06DateTimeFormatter  {

	public static void main(String[] args)throws ParseException {
		// TODO Auto-generated method stub
//		本地此刻   日期时间  对象
		LocalDateTime ldt=LocalDateTime.now();
		System.out.println(ldt);
		
//		解析/格式化器
		DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EEE a");
//		正向格式化
		System.out.println(dtf.format(ldt));
//		逆向格式化
		System.out.println(ldt.format(dtf));
		
//		解析字符串时间
		DateTimeFormatter dtf1=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//		解析当前字符串时间成为本地日期时间对象
		LocalDateTime ldt1=LocalDateTime.parse("2023-01-19 11:11:11",dtf1);
		System.out.println(ldt1);
		
		System.out.println(ldt1.getDayOfYear());

	}

}
package d4_jdk8_time;

import java.time.LocalDate;
import java.time.Period;

public class Demo07Period {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		当前本地  年月日
		LocalDate today=LocalDate.now();
		System.out.println(today);//2023-01-19
		
//		生日的 年月日
		LocalDate birthDay=LocalDate.of(2002, 11, 12);
		System.out.println(birthDay);
		
		Period period=Period.between( birthDay,today);//第二个参数减去第一个参数
		System.out.println(period.getYears());
		System.out.println(period.getMonths());
		System.out.println(period.getDays());

	}

}
package d4_jdk8_time;

import java.time.Duration;
import java.time.LocalDateTime;

public class Demo08Duration {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		本地日期对象
		LocalDateTime today=LocalDateTime.now();
		System.out.println(today);
		
//		出生的日期对象
		LocalDateTime birthDate=LocalDateTime.of(1999,9,29,20,00,00);
		System.out.println(birthDate);
		
		Duration duration=Duration.between(birthDate,today);
		
		System.out.println(duration.toDays());
		System.out.println(duration.toHours());

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值