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


    Date:

    代表的是日期和时间。

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

    有参构造器。

    1. package cn.ensource.d3_time;
    2. import java.util.Date;
    3. public class Test1Date {
    4. public static void main(String[] args) {
    5. // 掌握Date日期类的使用
    6. // 创建一个Date类对象,代表系统当前时间信息的
    7. Date d = new Date();
    8. System.out.println(d);
    9. // 拿到时间毫秒值
    10. long time = d.getTime();
    11. System.out.println(time);
    12. // 把时间毫秒值转换成日期对象,2s之后的时间是多少
    13. time += 2 * 1000;
    14. Date d2 = new Date(time);
    15. System.out.println(d2);
    16. // 直接把日期对象的时间通过setTime方法进行修改
    17. Date d3 = new Date();
    18. d3.setTime(time);
    19. System.out.println(d3);
    20. }
    21. }

    simpleDateFormat:

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

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

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

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

    pattern是声明时间格式的。

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

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

    1. package cn.ensource.d3_time;
    2. import java.text.SimpleDateFormat;
    3. import java.util.Date;
    4. public class Test2SimpleDateFormat {
    5. public static void main(String[] args) {
    6. // 目标:掌握SimpleDateFormat的使用
    7. // 1. 准备一些时间
    8. Date d = new Date();
    9. System.out.println(d);
    10. long time = d.getTime();
    11. System.out.println(time);
    12. // 格式化日期对象,和时间毫秒值
    13. SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    14. String rs1 = sdf.format(d);
    15. System.out.println(rs1);
    16. String rs2 = sdf.format(time);
    17. System.out.println(rs2);
    18. }
    19. }

    运行结果:

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

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

    运行结果:

    会添加一个ParseException。

    案例:秒杀活动:

    1. package cn.ensource.d3_time;
    2. import java.text.ParseException;
    3. import java.text.SimpleDateFormat;
    4. import java.util.Date;
    5. public class Test3 {
    6. public static void main(String[] args) throws ParseException {
    7. // 目标:完成秒杀案例
    8. // 1. 把开始时间、结束时间、小贾下单时间、小皮下单时间拿到案例程序中
    9. String start = "2023年11月11日 00:00:00";
    10. String end = "2023年11月11日 00:10:00";
    11. String xj = "2023年11月11日 00:01:18";
    12. String xp = "2023年11月11日 00:10:57";
    13. // 2. 注意:字符串的时间是没有办法进行运算,所以要进行格式化转换成日期对象
    14. SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
    15. Date dateStart = sdf.parse(start);
    16. Date dateEnd = sdf.parse(end);
    17. Date dateXj = sdf.parse(xj);
    18. Date dateXp = sdf.parse(xp);
    19. // 3. 开始判断小皮和小贾是否秒杀成功了
    20. // 把日期对象转成时间毫秒值
    21. long dateStartTime = dateStart.getTime();
    22. long dateEndTime = dateEnd.getTime();
    23. long dateXjTime = dateXj.getTime();
    24. long dateXpTime = dateXp.getTime();
    25. // 真正的判断
    26. if(dateXjTime > dateStartTime && dateXjTime < dateEndTime){
    27. System.out.println("小贾,你秒杀成功!");
    28. }else {
    29. System.out.println("小贾,你秒杀失败");
    30. }
    31. if(dateXpTime > dateStartTime && dateXpTime < dateEndTime){
    32. System.out.println("小皮,你秒杀成功!");
    33. }else {
    34. System.out.println("小皮,你秒杀失败!");
    35. }
    36. }
    37. }

     

  • 相关阅读:
    【图】:常用图搜索(图遍历)算法
    怎么把握住股票每天的最佳交易时机?
    EasyExcel实现对excel文件读写
    C++ Qt开发:QProcess进程管理模块
    组间差异分析就要这样可视化!
    (STM32)从零开始的RT-Thread之旅--SPI驱动ST7735(3)使用DMA
    PTC:后疫情时代,工程机械加速向智能服务转型
    阿里云新用户滑块验证不过,阿里云滑动验证流程及线上问题排查
    list【2】模拟实现(含迭代器实现超详解哦)
    公司日常业务开发中,我是如何基于antd定制属于自己的主题
  • 原文地址:https://blog.csdn.net/chang_chunhua/article/details/139369846