学习日记(常用类之经典的时间日期类:Date、SimpleDateFormat、Calender 类)

学习日记(常用类之经典的时间日期类:Date、SimpleDateFormat、Calender 类)

一、Date 类

  • Date 类的对象在 java 中代表的是当前所在系统的此刻日期时间

1. 记录时间(时间毫秒值、Date(日期)对象)

记录时间的两种形式

  • 日期:创建 Date(日期)对象,可以获取系统此时的日期时间
  • 时间毫秒值:调用方法,可以获取系统此时的时间毫秒值或用 System.currentTimeMillis()
名称说明
构造器public Date()创建一个 Date 对象,代表的是系统当前此刻的日期时间
常用方法public long getTime()获取时间对象此刻的毫秒值,返回值为 long 类型

2. 转换:时间毫秒值 -> Date(日期)对象

时间毫秒值转换为日期的方法:

名称说明
构造器public Date(long time)把时间毫秒值转换成 Date 时间对象

举例:计算出当前时间往后走 1 小时 121 秒之后的时间。


二、SimpleDateFormat 类

  • 可以把 Date 对象或时间毫秒值格式化成我们喜欢的时间形式(Date 对象或时间毫秒值 -> 时间格式)。
  • 也可以把字符串的时间形式解析成日期对象(时间格式 -> Date 对象)。
构造器说明
public SimpleDateFormat(String pattern)有参构造器,使用指定的格式构造

1. Date 对象或时间毫秒值 -> 时间格式(格式化)

格式化方法说明
public final String format(Date date)Date 对象 -> 时间格式,返回值为 String 类型
public final String format(Object time)时间毫秒值 -> 时间格式,返回值为 String 类型

2. 时间格式 -> Date 对象(解析)

解析方法说明
public Date parse(String source)时间格式 -> Date 对象,返回值为 Date 类型

举例:请计算出 2021 年 08 月 06 日 11 点 11 分 11 秒,往后走 2 天 14 小时 49 分 06 秒后的时间为多少。

注意:计算时间时,默认为 int 类型,防止数据溢出,用 “2L” 变为 long 型。

3. 案例:秒杀活动

秒杀时间为:2022年11月11日 00:00:00;结束时间为:2022年11月11日 00:10:00

姓名秒杀时间
小绿2022年11月11日 00:03:47
小红2022年11月11日 00:10:11

需求:判断两个同学是否秒杀成功。

分析:转化为时间毫秒值比较是否在秒杀时间范围内。


三、Calender 类

  • Calendar 代表了系统此刻日期对应的日历对象
  • Calendar 是一个抽象类不能直接创建对象。

Calendar 日历类创建日历对象的方法Calendar rightNow = Calendar.getInstance();

常用方法名说明
public int get(int field)取日期中的某个字段


注意:

  1. 区分:
  • Date(日期)对象例如:Thu Sep 22 11:04:32 CST 2022
  • 时间毫秒值例如:1663815872197
  • 喜欢的时间格式例如:2022年09月22日 11:06:23 星期四 上午
  1. 举例:计算从 1999 年 11 月 18 日零点到今天所走过的时间。

package com.residue.manyclass02;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatDemo03 {

    public static void main(String[] args) throws ParseException {

        //计算从 1999 年 11 月 18 日零点到今天所走过的时间

        //思路:现在的时间毫秒值 - 之前的时间毫秒值

        long t1 = new Date().getTime();  //现在的时间毫秒值
        //long t1 = System.currentTimeMillis();

        SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        String str = "1999-11-18 00:00:00";

        Date date2 = s.parse(str);
        long t2 = date2.getTime();

        //计算
        long d = (long) Math.floor((t1 - t2)/(1000.0*3600*24));  //天
        long h = (long) Math.floor((t1 - t2 - d*24L*3600*1000.0)/(1000.0*3600));  //小时
        long m = (long) Math.floor((t1 - t2 - d*24L*3600*1000.0 - h*3600*1000.0)/(1000.0*60));  //分
        double ss = (t1 - t2 - d*24L*3600*1000.0 - h*3600*1000.0 - m*60*1000.0)/1000.0;  //秒

        System.out.println("经过:" + d + " 天 " + h + " 小时 " + m + " 分 " + ss + " 秒。");

    }
}
  1. Date 类的月份是从 1 开始,而 Calendar 类的月份是从 0 开始。
  2. Calendar 通过方法创建的对象是可变日期对象,一旦修改后其对象本身表示的时间将产生变化。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sun 3285

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值