Java 日期时间类的使用

1 获取当前时间
  • 使用 Date

  • 使用 Calendar

// 1 使用Date类
Date date = new Date();
System.out.println(date.toString());
// Fri Sep 13 21:47:38 CST 2019

// 2 使用Calendar类
Calendar c = Calendar.getInstance();
System.out.println(c.getTime());
// Fri Sep 13 21:53:45 CST 2019
2 指定日期
// 1 使用Calendar指定日期
Calendar c = Calendar.getInstance();
c.set(2019, 9, 11); // 0代表一月份
System.out.println(c.getTime());
// Fri Oct 11 21:53:45 CST 2019

// 2 日期比较,使用Date生成日期并比较
boolean before = new Date(2019, 9, 11).before(new Date(2019, 9, 8));
System.out.println(before);
// false
3 格式化日期时间

使用 SimpleDateFormat

// yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。
// HH 是 24 小时制,而 hh 是 12 小时制。
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String formatDate = dateFormat.format(date);
String formatDate1 = dateFormat1.format(date);

System.out.println(formatDate);
// 2019-09-13 09:56:48
System.out.println(formatDate1);
// 2019-09-13 21:58:24
4 格式化输出日期时间
  • %t 之后用 y 表示输出日期的年份(2位数的年,如99)

  • %t 之后用 m 表示输出日期的月份,%t 之后用 d 表示输出日期的日号

  • %t 之后用 Y 表示输出日期的年份(4位数的年)

  • %t 之后用 B 表示输出日期的月份的完整名,%t 之后用 b 表示输出日期的月份的简称

Date date = new Date();
// getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
long dataL = date.getTime();

// 格式化年月日
// %t之后用y表示输出日期的年份(2位数的年,如99)
// %t之后用m表示输出日期的月份,%t之后用d表示输出日期的日号
System.out.printf("%1$ty-%1$tm-%1$td; %2$ty-%2$tm-%2$td%n", date, dataL);
// 19-09-13; 19-09-13

// %t之后用Y表示输出日期的年份(4位数的年),
// %t之后用B表示输出日期的月份的完整名, %t之后用b表示输出日期的月份的简称
System.out.printf("%1$tY-%1$tB-%1$td; %2$tY-%2$tb-%2$td%n", date, dataL);
// 2019-九月-13; 2019-九月-13
// c的使用
System.out.printf("全部日期和时间信息:%tc%n", date);
// 全部日期和时间信息:星期五 九月 13 22:04:55 CST 2019

// f的使用
System.out.printf("年-月-日格式:%tF%n", date);
// 年-月-日 格式:2019-09-13

// d的使用
System.out.printf("月/日/年格式:%tD%n", date);
// 月/日/年 格式:09/13/19

// r的使用
System.out.printf("HH:MM:SS PM格式(12时制):%tr%n", date);
// HH:MM:SS PM格式(12时制):10:04:55 下午

// t的使用
System.out.printf("HH:MM:SS格式(24时制):%tT%n", date);
// HH:MM:SS 格式(24时制):22:04:55

// R的使用
System.out.printf("HH:MM格式(24时制):%tR", date);
// HH:MM 格式(24时制):22:04
5 解析字符串为时间
// 1 时间字符串
String testDate = "2019-11-11 09:23:34";
// 2 解析格式
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

try {
    // 3 解析
    Date parse = parseFormat.parse(testDate);
    // 4 输出
    System.out.println(parse);
    // Mon Nov 11 09:23:34 CST 2019
} catch (ParseException e) {
    e.printStackTrace();
}
6 计算日期时间间隔
// 1 指定两个日期时间
Date date1 = new Date(2019, 11, 11, 9, 12, 34);
Date date2 = new Date(2019, 12, 12, 10, 23, 23);

// 2 计算时间间隔,ms为单位
long interval = Math.abs(date1.getTime() - date2.getTime());
System.out.println(interval + " ms");
// 2769049000 ms

// 3 转换为s为单位
long seconds = interval / 1000;

System.out.println(seconds / 3600 + "hour " 
                   + seconds % 3600 / 60 + "minute " 
                   + seconds % 3600 % 60 + "seconds");
// 769hour 10minute 49seconds
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值