时间板块API方法的使用
基本知识
1. 时间原点 :
1970年01月01日 08:00:00 东八区
1970年01月01日 00:00:00 格林威治时间
2. 时间的文化差异 :
//Calendar 日历类
JDK8之前的时间操作类中 : 一周的第一天不是周一而是周日
JDK8之前的时间操作类中 : 月份的索引是从 0 开始的
JDK8移除了文化差异!!
3. 时间的单词
1、时间单位:
秒 second;
分钟 minute;
一刻钟 quarter;
小时 hour;
天 day;
星期 week;
月 month;
年 year;
2、与日期相关单词:
今天 today;
明天 tomorrow;
后天 the day after tomorrow;
昨天 yesterday;
前天 the day before yesterday;
早晨 morning;
中午 noon;
下午 afternoon;
傍晚 evening;
今晚 tonight;
晚上 night/evening;
3、月份名称单词:
一月 January(缩写Jan);
二月 February(缩写Feb);
三月 March(缩写Mar);
四月 April(缩写Apr);
五月 May (缩写May);
六月 June (缩写Jun);
七月 July(缩写Jul);
八月 August(缩写Aug);
九月 September(缩写Sep);
十月 October(缩写Oct);
十一月 November(缩写 Nov);
十二月 December(缩写Dec)
4、星期名称单词:
星期一 Monday(缩写Mon);
星期二 Tuesday(缩写Tue);
星期三 Wednesday (缩写Wed);
星期四 Thursday(缩写Thu);
星期五 Friday(缩写Fri);
星期六 Saturday(缩写Sat);
星期日 Sunday(缩写Sun)
4. 不要操作农历
时间类型 :
Date : Date类型的时间 -> 日期时间 -> 中间值
long : 时间毫秒值 -> 可以计算
String : 最容易去表达的时间 --->输出格式
Date----->日期类
Date : 日期类 -> 特定的时间瞬间 精度 : 毫秒
java.util.Date;
构造方法 :
Date() : 得到的时间是创建Date对象的瞬间;
Date(long date) : 创建Date对象
1. 把时间归零(new Date(0))
2. 再加上传入的毫秒值定位的瞬间(new Date(1000))
成员方法 :
long getTime() : 获取当前时间对象的毫秒值
或:System.currentTimeMillis()
void setTime(long time) : 设置当前时间的毫秒值
1. 把时间归零 2. 再加上传入的毫秒值定位的瞬间
时间类型的转换操作:
long --> Date
1. Date(long date) : 创建Date对象
2. void setTime(long time) : 设置当前时间的毫秒值
Date --> long
long getTime()
SimpleDateFormat---->日期格式化类
SimpleDateFormat : 简单日期格式化的类
功能 :
1. 格式化日期
Date对象 --> String对象
2. 解析日期
String对象 --> Date对象
构造方法:
SimpleDateFormat 创建对象的方法 :
SimpleDateFormat(String pattern) : 传入日期格式代码创建SimpleDateFormat对象; String pattern : 日期格式代码
y : 年 M : 月 d : 日 H : 小时 m : 分钟 s : 秒
"yyyy年MM月dd日 HH时mm分ss秒"
格式化日期 :
Date对象 --> String对象
String format(Date date)
例如:
//创建日期格式化的类
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
//格式化日期
Date date = new Date();
String format = sdf.format(date);
System.out.println("date = " + date);//date = Sat Sep 03 22:27:32 CST 2022
System.out.println("format = " + format);//format = 2022年09月03日 22时27分32秒
解析日期 :
String对象 --> Date对象
//注意 : 日期格式和要解析的字符串时间格式要匹配
Date parse(String strTime)
例如:
//创建日期格式化的类
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
//解析字符串时间
String birthTime = "1991年01月01日 00时00分00秒";
Date date = sdf.parse(birthTime);
System.out.println("date = " + date);//date = Tue Jan 01 00:00:00 CST 1991
小案例:
public static void main(String[] args) throws ParseException {
//计算我活了多久
//现在时间
long now = System.currentTimeMillis();
//出生时间
Scanner sc = new Scanner(System.in);
System.out.println("请您输入您的出生年与日 : (yyyy-MM-dd HH:mm:ss)");
String birthStr = sc.nextLine(); //String时间
//String时间 --> Date时间 解析
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date birthDate = sdf.parse(birthStr);
//Date时间 --> long时间
long birthTime = birthDate.getTime();
//计算
long days = (now - birthTime) / (1000 * 60 * 60 * 24);
System.out.println("您已经活了 " + days + " 天,人的一生一共有3万多天,请珍爱生命远离赌毒~");
}
Calendar---->日历类
Calendar : 日历类
//时间文化差异 : 一周的第一天是周日 , 月份的索引 0 - 11
//创建日历类对象
Calendar calendar = Calendar.getInstance(); 直接通过类名获取此"抽象类的对象"//多态 : 时间指向现在
成员方法 :
1. 获取和设置日历字段的值
//int field : 要获取或者设置的日历字段的值
int get(int field)
void set(int field,int value)
void set(年,月,日,时,分,秒)
2. 日历类的转换功能
Calendar --> Date
Date getTime():
Date --> Calendar
void setTime(Date date)
3. 日历类对象直接转成毫秒值
Calendar --> 毫秒值
long getTimeInMillis()
毫秒值 --> Calendar
void setTimeInMillis(long millis)
DateTimeFormatter---->JDK1.8
LocalDateTime时间和字符串时间之间的转换问题 : 格式化和解析
DateTimeFormatter : 只提供日期 格式化和解析 格式的类
如何获取DateTimeFormatter类的对象 :
static DateTimeFormatter ofPattern(String pattern)
String pattern : 日期格式代码
格式化和解析的方法都来自于LocalDateTime类:
格式化 : LocalDateTime --> String
String format(DateTimeFormatter formatter)
例如:
//创建LocalDateTime对象
LocalDateTime now = LocalDateTime.now();
//创建DateTimeFormatter对象
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
//格式化
String format = now.format(formatter);
System.out.println("format = " + format);
解析 : String --> LocalDateTime
static LocalDateTime parse(String strTime,DateTimeFormatter formatter)
例如:
//日期格式对象
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
//解析字符串时间到LocalDateTime
LocalDateTime localDateTime = LocalDateTime.parse("2011年11月11日 11:11:11", formatter);
System.out.println("localDateTime = " + localDateTime);
LocalDateTime/LocalDate/LocalTime--->JDK1.8开始
LocalDateTime/LocalDate/LocalTime : 本地年月日时分秒/本地年月日/本地时分秒
LocalDateTime 为例讲解 :
LocalDateTime是一个不可变的日期时间对象,代表日期时间,通常被视为年 - 月 - 日 - 时 - 分 - 秒。 时间表示为纳秒精度.
如何创建对象 :
static LocalDateTime now() : 获取LocalDateTime对象,并把时间指向现在
static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second) : 获取LocalDateTime对象,并把时间指向指定的时间
static LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute, int second)
LocalDateTime的until方法(时间间隔方法)
long until(Temporal endExclusive, TemporalUnit unit)
Temporal endExclusive : 是LocalDateTime的父接口
TemporalUnit unit : 是时间单位的父接口
ChronoUnit : 时间单位的枚举类型
格式 : 起始时间LocalDateTime对象.until(结束时间LocalDateTime对象,时间单位对象)
例如:
//现在的
LocalDateTime now = LocalDateTime.now();
//出生日期的
LocalDateTime birthDate = LocalDateTime.of(1991, 1, 1, 0, 0, 0);
//时间间隔方法 -> until 直到
long days = birthDate.until(now, ChronoUnit.DAYS);
System.out.println("days = " + days);
LocalDateTime的get系列方法(获取值)
int getYear() :获取年信息
int getMonthValue() :获取月份信息(1-12)
int getDayOfMonth(): 获取天信息
int getHour() :获取小时信息
int getMinute():获取分钟信息
int getSecond(): 获取秒钟信息
-------------------------------------------
DayOfWeek getDayOfWeek():获取星期信息
int getDayOfYear():获取年中天信息
Month getMonth(): 获取月份信息(枚举对象返回)
int getNano():获取纳秒信息
LocalDateTime的plus系列方法(加)
plus系列方法是对日期字段进行做加法的操作!
LocalDateTime plusYears(long years)
LocalDateTime plusMonths(long months)
LocalDateTime plusDays(long days)
LocalDateTime plusHours(long hours)
LocalDateTime plusMinutes(long minutes)
LocalDateTime plusSeconds(long seconds)
-------------------------------------------------
LocalDateTime plusNanos(long nanos)
LocalDateTime plusWeeks(long weeks)
注意:
1. 记得接收, 因为时间修改是生成新的LocalDateTime对象,老的LocalDateTime对象不会改变
2. 如果你传入的是正数就是做加法,如果你传入的是负数就是做减法
LocalDateTime的minus系列方法(减)
minus系列方法是对日期字段进行做减法的操作!
LocalDateTime minusYears(long years)
LocalDateTime minusMonths(long months)
LocalDateTime minusDays(long days)
LocalDateTime minusHours(long hours)
LocalDateTime minusMinutes(long minutes)
LocalDateTime minusSeconds(long seconds)
-------------------------------------------------
LocalDateTime minusNanos(long nanos)
LocalDateTime minusWeeks(long weeks)
注意:
1. 记得接收, 因为时间修改是生成新的LocalDateTime对象,老的LocalDateTime对象不会改变
2. 如果你传入的是正数就是做减法,如果你传入的是负数就是做加法
LocalDateTime的with系列方法(设置值)
with系列方法是对日期字段进行设置值的操作!
LocalDateTime withYears(long years)
LocalDateTime withMonths(long months)
LocalDateTime withDays(long days)
LocalDateTime withHours(long hours)
LocalDateTime withMinutes(long minutes)
LocalDateTime withSeconds(long seconds)
-------------------------------------------------
LocalDateTime withNanos(long nanos)
LocalDateTime withWeeks(long weeks)
注意:
1. 记得接收, 因为时间修改是生成新的LocalDateTime对象,老的LocalDateTime对象不会改变
Period----->年月日的时间间隔类
Period 代表年月日的时间间隔类
得到Period对象
static Period between(LocalDate startDateInclusive, LocalDate endDateExclusive)
例如:
public static void main(String[] args) {
//创建时间间隔对象
Period between = Period.between(LocalDate.of(1991, 1, 1), LocalDate.now());
System.out.println("between = " + between);//P 31Y8M2D
int days = between.getDays();
System.out.println("days = " + days);//days = 2
//long toTotalMonths()
System.out.println("between.toTotalMonths() = " + between.toTotalMonths());//
between.toTotalMonths() = 380
}
Duration------->时分秒的时间间隔类
Duration 代表时分秒的时间间隔类
得到Duration对象
static Duration between(Temporal startInclusive, Temporal endExclusive)
//Temporal : 是LocalDateTime/LocalDate/LocalTime的父接口,语法上参数都可以接受; 但是在Duration的between方法的逻辑上不可以接收LocalDate的;
to系列方法 : 计算时间间隔对象中表示的时间值
toDays() : 计算间隔了多少天
例如:
public static void main(String[] args) {
//创建Duration对象
Duration between = Duration.between(
LocalDateTime.of(1991, 1, 1,0,0,0)
, LocalDateTime.now());
//PT 277643H14M16.296S
System.out.println("between = " + between);
//计算你活了多久
long days = between.toDays();
System.out.println("days = " + days);
}
标签:String,板块,long,int,API,时间,LocalDateTime,Date,方法
From: https://www.cnblogs.com/Jing-com/p/16653941.html