Java进阶学习笔记31——日期时间

Date:

代表的是日期和时间。

分配Date对象并初始化它以表示自标准基准时间(称为纪元)以来的指定毫秒数,即1970年1月1日00:00:00。

有参构造器。

java 复制代码
package cn.ensource.d3_time;

import java.util.Date;

public class Test1Date {
    public static void main(String[] args) {
        // 掌握Date日期类的使用
        // 创建一个Date类对象,代表系统当前时间信息的
        Date d = new Date();
        System.out.println(d);

        // 拿到时间毫秒值
        long time = d.getTime();
        System.out.println(time);

        // 把时间毫秒值转换成日期对象,2s之后的时间是多少
        time += 2 * 1000;
        Date d2 = new Date(time);
        System.out.println(d2);

        // 直接把日期对象的时间通过setTime方法进行修改
        Date d3 = new Date();
        d3.setTime(time);
        System.out.println(d3);
    }
}

simpleDateFormat:

为什么要学习简单日期格式化?

在系统中,把时间格式格式化成用户喜欢看的形式。就要用到简单时间格式化。

代表简单日期格式化,可以用来把日期对象、时间毫秒值格式化成我们想要的形式。

SimpleDateFormat: 格式化和解析日期的具体类。

pattern是声明时间格式的。

在父类DateFormat中找到format(Date date),将日期格式化成日期/时间字符串。

再在Format父类中找到format(格式化一个对象来生成一个字符串。)

java 复制代码
package cn.ensource.d3_time;

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

public class Test2SimpleDateFormat {
    public static void main(String[] args) {
        // 目标:掌握SimpleDateFormat的使用
        // 1. 准备一些时间
        Date d = new Date();
        System.out.println(d);

        long time = d.getTime();
        System.out.println(time);

        // 格式化日期对象,和时间毫秒值
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String rs1 = sdf.format(d);
        System.out.println(rs1);

        String rs2 = sdf.format(time);
        System.out.println(rs2);
    }
}

运行结果:

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

字符串时间又转成日期对象,才能解决问题。

运行结果:

会添加一个ParseException。

案例:秒杀活动:

java 复制代码
package cn.ensource.d3_time;

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

public class Test3 {
    public static void main(String[] args) throws ParseException {
        // 目标:完成秒杀案例
        // 1. 把开始时间、结束时间、小贾下单时间、小皮下单时间拿到案例程序中
        String start = "2023年11月11日 00:00:00";
        String end = "2023年11月11日 00:10:00";
        String xj = "2023年11月11日 00:01:18";
        String xp = "2023年11月11日 00:10:57";

        // 2. 注意:字符串的时间是没有办法进行运算,所以要进行格式化转换成日期对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date dateStart = sdf.parse(start);
        Date dateEnd = sdf.parse(end);
        Date dateXj = sdf.parse(xj);
        Date dateXp = sdf.parse(xp);

        // 3. 开始判断小皮和小贾是否秒杀成功了
        // 把日期对象转成时间毫秒值
         long dateStartTime = dateStart.getTime();
         long dateEndTime = dateEnd.getTime();
         long dateXjTime = dateXj.getTime();
         long dateXpTime = dateXp.getTime();

         // 真正的判断
        if(dateXjTime > dateStartTime && dateXjTime < dateEndTime){
            System.out.println("小贾,你秒杀成功!");
        }else {
            System.out.println("小贾,你秒杀失败");
        }

        if(dateXpTime > dateStartTime && dateXpTime < dateEndTime){
            System.out.println("小皮,你秒杀成功!");
        }else {
            System.out.println("小皮,你秒杀失败!");
        }
    }
}
相关推荐
小徐Chao努力32 分钟前
【Langchain4j-Java AI开发】09-Agent智能体工作流
java·开发语言·人工智能
Coder_Boy_1 小时前
SpringAI与LangChain4j的智能应用-(理论篇3)
java·人工智能·spring boot·langchain
Coder_Boy_1 小时前
基于SpringAI的智能平台基座开发-(六)
java·数据库·人工智能·spring·langchain·langchain4j
伯明翰java2 小时前
Java数据类型与变量
java·开发语言
想用offer打牌2 小时前
如何开启第一次开源贡献之路?
java·后端·面试·开源·github
小许学java3 小时前
Spring原理
java·spring·生命周期·作用域·原理
教练、我想打篮球3 小时前
122 Hession,FastJson,ObjectInputStream的序列化反序列化相同引用的处理
java·config·utils
酷柚易汛3 小时前
酷柚易汛ERP 2025-12-26系统升级日志
java·前端·数据库·php
侠客行03174 小时前
Mybatis入门到精通 一
java·mybatis·源码阅读
消失的旧时光-19434 小时前
微服务的本质,其实是操作系统设计思想
java·大数据·微服务