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());
}
}