java日期时间

1. Date类

java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。

构造器

date() :获取从1970/01/01开始的毫秒数

Date中的方法

Long getTime(): 获取时间戳(也就毫秒数)

int compareTo(Date date)

比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。

2.格式化

两种方式:使用printf格式化日期,使用SimpleDateFormat类

printf格式化日期

格式:以%t开头加上转换符。具体的转换符含义如下表:

转 换 符说 明示 例
c包括全部日期和时间信息星期六 十月 27 14:21:20 CST 2007
F"年-月-日"格式2007-10-27
D"月/日/年"格式10/27/07
r"HH:MM:SS PM"格式(12时制)02:25:51 下午
T"HH:MM:SS"格式(24时制)14:28:16
R"HH:MM"格式(24时制)14:28

代码

 //日期对象使用printf格式化日期
 System.out.printf("现在的日期格式:%tF%n",date);
 System.out.printf("现在的日期格式:%tD%n",date);
 System.out.printf("现在的日期格式:%tr%n",date);
 System.out.printf("现在的日期格式:%tT%n",date);
 System.out.printf("现在的日期格式:%tR%n",date);

效果: 

SimpleDateFormat类

说明:SimpleDateFormat类是线程不安全的。SimpleDateFormat类是使用字符串来作为编码格式的。

在此模式中,所有的 ASCII 字母被保留为模式字母,定义如下:

字母描述示例
G纪元标记AD
y四位年份2001
M月份July or 07
d一个月的日期10
hA.M./P.M. (1~12)格式小时12
H一天中的小时 (0~23)22
m分钟数30
s秒数55
S毫秒数234
E星期几Tuesday
D一年中的日子360
F一个月中第几周的周几2 (second Wed. in July)
w一年中第几周40
W一个月中第几周1
aA.M./P.M. 标记PM
k一天中的小时(1~24)24
KA.M./P.M. (0~11)格式小时10
z时区Eastern Standard Time
'文字定界符Delimiter
"单引号`

代码

 //日期对象的格式转换SimpleDateFormat格式化
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
 String date1 = sdf.format(date);
 System.out.println(date1);
 ​
 //SimpleDateFormat的练习
 //日期转换格式联系
 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM");
 String date2 = sdf1.format(date);
 String date3 = sdf2.format(date);
 System.out.println(date2);
 System.out.println(date3);

效果:

SimpleDateFormat类转成Date对象

代码

 //SimpleDateFormat 转成 date格式 注意:若格式为YYYY-MM-dd 转换是不对的,我把YYYY改成了yyyy
 String dateS = "2021-03-21 ";
 SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
 try {
     Date date4 = sdf3.parse(dateS);
     System.out.println(sdf3.format(date4));
 } catch (ParseException e) {
     e.printStackTrace();
 }
 ​
 String dates1 = "2021-08-20 10:45:60";
 SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
 try {
     Date date5 = sdf4.parse(dates1);
     System.out.println(sdf4.format(date5));
 } catch (ParseException e) {
     e.printStackTrace();
 }

效果

3.calendar类

calendar类可以获取时间特定的部分,比如小时,分钟,秒,还可以在日期上作加减。

注意:celendar类是一个抽象类。

通过代码来了解

 //date时间计算Calendar类基本使用
 //创建calendar类
 Calendar calendar = Calendar.getInstance();//这是获取当前的时间
 Date date5 = calendar.getTime(); //这是将calendar转成date
 System.out.println(date5);
 ​
 //创建calendar可以指定时间
 Calendar calendar1 = Calendar.getInstance();
 calendar1.set(2021,6-1,12);
 Date cDate = calendar1.getTime();
 SimpleDateFormat CSdf = new SimpleDateFormat("yyyy-MM-dd");
 System.out.println(CSdf.format(cDate));
 ​
 //使用set设置时间
 Calendar calendar2 = Calendar.getInstance();
 calendar2.set(2021,8-1,20);
 Date cDate1 = calendar2.getTime();
 SimpleDateFormat cSdf = new SimpleDateFormat("yyyy-MM-dd");
 System.out.println(cSdf.format(cDate1));
 ​
 //使用add设置
 Calendar calendar3 = Calendar.getInstance();
 calendar3.add(Calendar.DATE,10); //10的参数是表示在当前日期后十天的日期
 Date cDate2 = calendar3.getTime();
 SimpleDateFormat cSdf2 = new SimpleDateFormat("yyyy-MM-dd");
 System.out.println(cSdf2.format(cDate2));
 //使用add设置时间
 Calendar calendar4 = Calendar.getInstance();
 calendar4.add(Calendar.YEAR,2);
 Date cDate3 = calendar4.getTime();
 System.out.println(cDate3);
 ​
 //calendar类对象信息的获取
 Calendar calendar5 = Calendar.getInstance();
 int year = calendar5.get(Calendar.YEAR);
 int month = calendar5.get(Calendar.MONTH);
 int day = calendar5.get(Calendar.DATE);
 int hour = calendar5.get(Calendar.HOUR);
 int minute = calendar5.get(Calendar.MINUTE);
 int second = calendar5.get(Calendar.SECOND);
 System.out.println(year+" "+month+" "+day+" "+hour+" "+minute+" "+second);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值