日期时间类:Date类日期时间格式化(DateFormat类)Calendar类

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

⽇期时间类:Date类⽇期时间格式化(DateFormat
类)Calendar类
⽇期时间类
Date类
注:以下介绍的Date都在java.util包下,除此之外,java.sql包下也有此类,不要混淆
构造⽅法
1. Date():分配Date对象并初始化此对象,以表⽰分配他的时间(精确到毫秒)
2. Date(long date):分配Date对象并初始化此对象,以表⽰⾃标准基准时间(即1970年1⽉1⽇00:00:00GMT)起指定毫秒数Date后
的时间
使⽤第⼆种构造⽅法要先创建⼀个Date对象
//在此之前要导⼊Date类
import java.util.Date;
long t=System.currentTimeMillis();
Date date = new Date(t);
注:使⽤Date对象⽤的是long
Date类的常⽤⽅法和说明
⽅法说明
after(Date when)测试当前⽇期是否在指定⽇期之后
before(Date when)测试当前⽇期是否在指定⽇期之前
getTime()获得⾃1970年1⽉1⽇00:00:00GMT起到现在所经过的毫秒数
setTime(long time)设置当前Date对象所表⽰的⽇期时间值,该值⽤以表⽰1970年1⽉1⽇00:00:00GMT以后time毫秒的时间点
获取当前⽇期和时间
import java.util.Date;
public static void main(String[] args) {
Date date = new Date();
long value= date.getTime();//获得毫秒数
System.out.println("⽇期:"+date);
System.out.println("到现在所经历的毫秒数是:"+value);
}
/*
⽇期:Sat Sep 04 18:44:19 CST 2021
到现在所经历的毫秒数是:1630752259575
*/
⽇期时间格式化(DateFormat类)
格式化风格有以下4种
(以2021年9⽉2⽇举例)
SHORT:完全为数字
MEDIUM:较长
LONG:更长
FULL:完全指定
要格式化⽇期,⾸先要创建DateFormat对象,因为他是抽象类,所以可以⽤getDateInstance()进⾏创建
DateFormat d=DateFormat.getDateInstance();
此类常⽤⽅法和说明
⽅法说明
format()将⼀个Date对象实例格式化为⽇期/时间字符串
⽅法说明
getCalendar()获取于此⽇期/时间格式器关联的⽇历
getDateInstance()获取⽇期格式器,该格式器具有默认语⾔环境的默认格式化风格
getDateTimeInstance()获取⽇期/时间格式器,该格式器具有默认语⾔环境的默认格式化风格
getInstance()获取为⽇期和时间使⽤SHORT风格的默认⽇期/时间格式器
getTimeInstance()获取时间格式器,该格式器具有默认语⾔环境的默认格式化风格
parse(String source)将字符串解析成⼀个⽇期,并返回这个⽇期的Date对象
实例如下
import java.text.DateFormat;
import java.util.Date;
public static void main(String[] args) {
//将当前⽇期按照默认模式输出
DateFormat d1=DateFormat.getInstance();
System.out.println(d1.format(new Date()));
//21-9-6 下午4:40
//输出长类型格式的当前时间
DateFormat d2=DateFormat.getTimeInstance(DateFormat.LONG);
System.out.println(d2.format(new Date()));
//下午04时40分48秒
//输出长类型格式的当前⽇期
DateFormat d3=DateFormat.getDateInstance(DateFormat.LONG);
System.out.println(d3.format(new Date()));
//2021年9⽉6⽇
//输出长类型格式的当前时间和⽇期
DateFormat d4=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
System.out.println(d4.format(new Date()));
//2021年9⽉6⽇下午04时40分48秒
}
因为DateFormat是⼀个抽象类,所以,除了使⽤getXXXInstance()⽅法创建对象,还可以⽤其⼦类,例如SimpleDateFormat类,此类提供了19个格式化字符,可以让开发者随意编写⽇期格式
SimpleDateFormat类提供的格式化字符
字母⽇期或时间元素类型⽰例
G Era标识志符Text AD
y年Year2021;21
M年中的⽉份Month July;Jul;07
w年中的周数Number22
W⽉份中的周数Number3
D年中的天数Number56
d⽉份中的天数Number15
F⽉份中的星期Number3
E星期中的天数Text Monday;Mon
a Am/pm标记Text PM
H⼀天中的⼩时数(0~23)Number11
h am/pm中的⼩时数(1~12)Number2
k⼀天中的⼩时数(1~24)Number22
K am/pm中的⼩时数(0~11)Number10
m⼩时中的分钟数Number35
s分钟中的秒数Number50
S毫秒数Number555
z时区General time zone Pacific Standard Time;PST;GMT-08:00
Z时区RFC 822 time zone-800
⼀般表中字母的数量会影响数字的格式,例如yyyy表⽰4位年份:2021,yy表⽰2位年份:21,y表⽰4位年份,如果超过4个y,则在左侧补0,yyyyyy表⽰002021
常⽤时间格式
⽇期时间对应的格式
2021/9/6yyyy/MM/dd
2021.9.6yyyy.MM.dd
⽇期时间对应的格式
2021-09-06 17:42:50yyyy-MM-dd HH.mm.ss
2021年9⽉6⽇ 17时46分50秒yyyy年MM⽉dd⽇ HH时mm分ss秒
下午5时ah时
今年已经过去了200天今年已经过去了D天
⽰例如下
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public static void main(String[] args) {
DateFormat d = new SimpleDateFormat("yyyy年MM⽉dd⽇ EEEE HH时mm分ss秒");
System.out.println("现在是:");
System.out.println(d.format(new Date()));
//2021年09⽉06⽇星期⼀ 17时51分17秒
}
Calendar类
Date在设计时并没有考虑国际化,所以之中的⽅法并不能满⾜当下需求,所以就有了Calendar类的出现,也是⼀个抽象类,该类提供了⼀些字段和⽅法,这些字段和⽅法被定义为protected。

该类提供了⼀个getIntance()⽅法,以获得此类型的⼀个通⽤对象。

Calendar类的getIntance()⽅法返回⼀个Calendar类对象,其⽇历字段已由当前⽇期和时间初始化
import java.util.Calendar;
Calendar a=Calendar.getInstance();
此类提供的常⽤字段及其说明
字段名说明
DATE指⽰⼀个⽉中的某天
DAY_OF_MONTH指⽰⼀个⽉中的某天
DAY_OF_WEEK指⽰⼀个星期的某天
DAY_OF_WEEK_IN_MONTH指⽰当前⽉中的第⼏个星期
DAY_OF_YEAR指⽰当前年中的天数
HOUR指⽰上午或下午的⼩时
HOUR_OF_DAY指⽰⼀天中的⼩时
MILLISECOND指⽰⼀秒中的毫秒
MINUTE指⽰⼀⼩时的分钟
MONTH指⽰⽉份
SECOND指⽰⼀分钟的秒
time⽇历的当前设置时间,以毫秒为单位,表⽰⾃格林威治标准时间1970年1⽉1⽇0:00:00后经过的时间WEEK_OF_MONTH指⽰当前⽉中的星期数
WEEK_OF_YEAR指⽰当前年中的星期数
YEAR指⽰年
此类提供的常⽤⽅法和说明
⽅法说明
add()根据⽇历规则,为给定的⽇历字段添加或减去指定的时间量
after()判断此Calendar对象表⽰的时间是否在指定Object表⽰的时间之后,返回判断
结果
before()判断此Calendar对象表⽰的时间是否在指定Object表⽰的时间之前,返回判断
结果
get()返回给定⽇历字段的值
getInstance()使⽤默认时区和语⾔环境获得⼀个⽇历
getTime()返回⼀个表⽰此判断此Calendar对象时间值(从历元⾄现在的时间偏移量)的
Date对象
getTimeInMillis()返回此判断此Calendar对象的时间值,以毫秒为单位
roll()在给定的⽇历时间段上添加或减去(上/下)单个时间单位,不更改更⼤的字段set(int field,int value)将给定的⽇历字段设置为给定值
set(int year,int month,int date)设置⽇历字段YEAR,MONTH和DAY_OF_MONTH的值
set(int year,int month,int date,int hourOfDay,int minute)设置⽇历字段YEAR,MONTH,DAY_OF_MONTH,HOUR_OF_DAY和
MINUTE的值
set(int year,int month,int date,int hourOfDay,int minute,int
second)设置⽇历字段YEAR,MONTH,DAY_OF_MONTH,HOUR,MINUTE和
SECOND的值
setTime()使⽤给定的Date对象设置此Calendar对象的值setTimeInMillis()⽤给定的long值设置此Calendar对象的当前时间值⽅法说明
今天离中华⼈民共和国成⽴100周年差多少天
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public static void main(String[] args) {
System.out.println("----------中华⼈民共和国100周年倒计时----------");
Date date = new Date();
//创建SDF对象,设置⽇期格式
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM⽉dd⽇");
//调⽤format⽅法,格式化时间并转换为⽬标格式
String today=simpleDateFormat.format(date);
System.out.println("今天是"+today);//输出当前⽇期
//获取从1970年1⽉1⽇⾄当前所经历的毫秒数
long time1= date.getTime();
//使⽤默认时区和语⾔环境获得⼀个⽇历
Calendar calendar=Calendar.getInstance();
//设置⽇历中的年⽉⽇的值,因为⽉份是从0开始的,所以要减1
calendar.set(2049,10-1,1);
//计算⾃1970年1⽉1⽇到2049年10⽉1⽇所经过的毫秒数
long time2= calendar.getTimeInMillis();
//计算当前时间到2049年10⽉1⽇相差的时间
long day=(time2-time1)/(1000*60*60*24);
System.out.println("距离2049年10⽉1⽇还有"+day+"天");
}
注:
1. c.(Calendar.DAY_OF_MONTH,0)获取的是上个⽉的最后⼀天,所以调⽤前需要将⽉份往后加⼀个⽉
2. Calendar.MONTH的第⼀个⽉是从0开始记录的,所以在获得⽉份数字后要加1。

年和⽇是从1记录的,不⽤加1
3. Calendar.DAY-OF_WEEK的第⼀天是周⽇,第⼆天是周⼀,最后⼀天是周六
关于setTime
import java.util.Date;
Date date = new Date();
date.setTime(10000);//10000毫秒等于10秒
System.out.println(date);
//输出Thu Jan 01 08:00:10 CST 1970
setTime(t)指的是经过从1970年1⽉1⽇8点开始经过t毫秒后的时间。

相关文档
最新文档