Java中常用的API(二)---日期与时间

Java常用API(二)

日期与时间

Date

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

Date的构造器

名称说明
public Date()创建一个Date对象,代表的是系统当前此刻日期时间
public Date(long time)把时间毫秒值转换成Date日期对象

Date的常用方法

名称说明
public long getTime()获取时间的毫秒值
public void setTime(long time)设置日期对象的时间为当前时间毫秒值对应的时间

Date类记录时间的2种形式

1.日期对象

	//1.创建一个Date类的对象,代表系统此刻日期时间对象
    Date d = new Date();
	//输出结果:Thu Aug 25 21:50:11 CST 2022
    System.out.println(d);

2.时间毫秒值

指的是从1970年1月1日 00:00:00走到此刻的总的毫秒数,应该是很大的(long)

	//获取当前时间的毫秒值
    long time = d.getTime();
	//输出结果:1661435411923
    System.out.println(time);
  • 案例:计算出当前时间往后走1小时121秒之后的时间是多少?
	 //1.定义一个当前日期的时间对象
     Date d1 = new Date();
     System.out.println(d1);
     //2.获取当前日期时间对象的毫秒值 当前时间往后走 1小时121秒
     long time1 = d1.getTime();
     time1 += (60L * 60 + 121) * 1000;
     //3.调用Date的方法将时间毫秒值转换成Date日期对象
     Date d2 = new Date(time1);
     System.out.println(d2);

在这里插入图片描述

1.日期时间如何创建,如何获取时间毫秒值?

  • Date date = new Date();
  • Long time = date.getTime();

2.时间毫秒值怎么恢复成日期对象?

  • Date d = new Date(time);

SimpleDateFormat

  • 可以对Date对象或时间毫秒值格式化成我们喜欢的时间形式
  • 也可以把字符串的时间形式解析成日期对象

SimpleDateFormat的构造器

构造器说明
public SimpleDateFormat()构造一个SimpleDateFormat,使用默认格式
public SimpleDateFormat(String pattern)构造一个SimpleDateFormat,使用指定的格式

SimpleDateFormat的格式化方法

格式化方法说明
public final format(Date date)将日期格式化成日期/时间字符串
public final String format(Object time)将时间毫秒值格式化成日期/时间字符串

格式化的时间形式的常用对应关系如下:

2020-11-11 19:12:17 -----------------------------------yyyy-MM-dd HH:mm:ss

2020年11月11日 19:12:17 ---------------------------- yyyy年MM月dd日 HH:mm:ss

        //1.日期对象
        Date d = new Date();
        System.out.println(d);

        //2.格式化这个日期对象 (指定最终格式化的形式)
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");

        //3.开始格式化日期对象成为喜欢的字符串形式
        String str = sdf.format(d);
        System.out.println(str);

        System.out.println("----------------");

        //4.格式化时间毫秒值
        //需求:请问121秒后的时间是多少
        long time = System.currentTimeMillis();
        System.out.println(new Date(time));
        String str1 = sdf.format(time + 121 * 1000 );
        System.out.println(str1);

SimpleDateFormat解析字符串时间成为日期对象

解析方法说明
public Date parse(String source)从给定字符串的开始解析文本以生成日期

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

        // 学会使用SimpleDateFormat解析字符串时间成为对象
        //计算出 2021年08月06日11点11分11秒,往后走2天14小时49分06秒后的时间是多少

        //1.把字符串时间写入程序中
        String dateStr = "2021年08月06日 11:11:11";
        System.out.println(dateStr);
        //2.把字符串时间解析成日期对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date d = sdf.parse(dateStr);
        //3.往后走 2天14小时49分06秒
        long time = d.getTime();
        time += (2L * 24 * 60 * 60 + 14 * 60 * 60 + 49 * 60 + 6) * 1000;
        //4.格式化这个时间毫秒值得出结果
        System.out.println(sdf.format(new Date(time)));

在这里插入图片描述

1.SimpleDateFormat可以格式化哪些时间形式?

	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	String rs1 = sdf.format(date);
	String rs2 = sdf.format(time);

2.SimpleDateFormat如何进行字符串时间的解析的?

	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	Date d = sdf.parse("2021-08-01 11:11:11");

需求:

  • 小明下单付款的时间为:2020年11月11日 0:03:47
  • 小花下单付款的时间为:2020年11月11日 0:10:11
  • 请说明这两位同学有没有参加上秒杀活动

分析:

  • 判断下单时间是否在开始到结束的范围内
  • 把字符串形式的时间编程毫秒值
        //1.将时间写入程序
        String strdate1  = "2020年11月11日 0:03:47";  //小明的下单时间
        String strdate2  = "2020年11月11日 0:10:11";  //小花的下单时间

        String starttime = "2020年11月11日 0:00:00";
        String endtime = "2020年11月11日 0:10:00";

        //2.判断下单时间是否在开始到结束的范围内
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        long time1 = sdf.parse(starttime).getTime();
        long time2 = sdf.parse(endtime).getTime();

        if (sdf.parse(strdate1).getTime() > time1 && sdf.parse(strdate1).getTime() < time2){
            System.out.println("小明抢单成功,可以发货");
        }else{
            System.out.println("小明抢单失败,再接再厉");
        }

        if (sdf.parse(strdate2).getTime() > time1 && sdf.parse(strdate2).getTime() < time2){
            System.out.println("小花抢单成功,可以发货");
        }else{
            System.out.println("小花抢单失败,再接再厉");
        }

在这里插入图片描述

Calendar

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

Calendar常用方法

方法名说明
public int get(int field)取日期中的某个字段信息
public void set(int field,int value)修改日历的某个字段信息
public void add(int field,int amount)为某个字段增加/减少指定的值
public final Date getTime()拿到此刻日期对象
public long getTimeInMillis()拿到此刻时间毫秒值
        //1.拿到系统此刻日历对象
        Calendar cal = Calendar.getInstance();
        System.out.println(cal);

        //2.获取日历的信息:public int get(int field):取日期中的某个字段信息 还有很多
        System.out.println(cal.get(Calendar.YEAR));
        System.out.println(cal.get(Calendar.MONTH) + 1);
        System.out.println(cal.get(Calendar.DAY_OF_YEAR));

        //3.请问65天后是什么时间  public void add(int field,int amount)
        cal.add(Calendar.DAY_OF_YEAR,65);
        
        //4.public final Date getTime(): 拿到此刻日期对象
        Date d1 = cal.getTime();
        System.out.println(d1);

注意:Calendar是可变日期对象,一旦修改后其对象本身表示的时间将产生变化

1.Calendar如何去得到日历对象的?

  • public static Calendar getInstance():获取当前日历对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

RainbowCoder

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

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

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

打赏作者

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

抵扣说明:

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

余额充值