【Java常用的API】JDK7以前时间相关类

news2024/11/18 5:47:20
🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

目录

时间相关的知识点

Data时间类

练习

时间计算

需求1:打印时间原点开始一年之后的时间

需求2:定义任意两个Date对象,比较一下哪个时间在前,哪个时间在后

总结

simpleDataFormat类

simpleDataFormat类练习

练习

按照指定格式展示

秒杀活动

calendar类

获取calendar日历对象的方法

calendar常用方法

练习

总结


时间相关的知识点

Data时间类

Date 类是一个JDK写好的Javabean类,用来描述时间,精确到毫秒。

利用空参构造创建的对象,默认表示系统当前时间。

利用有参构造创建的对象,表示指定的时间。

public class Data {
    private long time;
}

创建Data时间类:

import java.util.Date;

public class Data {
    public static void main(String[] args) {
                    /*
            public Date() 创建Date对象,表示当前时间
            public Date(long date) 创建Date对象,表示指定时间
            public void settime(long time) 设置/修改毫秒值
            public long gettime() 获取时间对象的毫秒值
        */


        //1、创建对象表示一个时间
        Data d1 = new Data();
//        System.out.println(d1);

        //2、创建对象表示一个指定的时间
        Date d2 = new Date(0L);
        System.out.println(d2);

        //3、setTime  修改时间
        //1000毫秒 = 1秒
        d2.setTime(1000L);
        System.out.println(d2);

        //3、gettime  获取当前时间的毫秒值
        long time = d2.getTime();
        System.out.println(time);
    }
}

练习

时间计算

需求1:打印时间原点开始一年之后的时间

需求2:定义任意两个Date对象,比较一下哪个时间在前,哪个时间在后

需求1:打印时间原点开始一年之后的时间
import java.util.Date;

public class Data {
    public static void main(String[] args) {
/*        需求1:打印时间原点开始一年之后的时间
        需求2:定义任意两个Date对象,比较一下哪个时间在前,哪个时间在后
*/
        //需求1:打印时间原点开始一年之后的时间
        //1、创建一个对象,表示时间原点
        Date d1 = new Date(0L);
        System.out.println(d1);

        //2、获取d1时间的毫秒值
        long time = d1.getTime();

        //3、在这个基础上我们添加一年的毫秒值
        time = time + 1000L * 60 * 60 * 24 * 365;

        //4、把计算之后的时间毫秒值,再设置回d1当中
        d1.setTime(time);

        //5、打印d1
        System.out.println(d1);
    }
}

需求2:定义任意两个Date对象,比较一下哪个时间在前,哪个时间在后
import java.util.Date;
import java.util.Random;

public class Data {
    public static void main(String[] args) {
/*        需求1:打印时间原点开始一年之后的时间
        需求2:定义任意两个Date对象,比较一下哪个时间在前,哪个时间在后
*/

        //需求2:定义任意两个Date对象,比较一下哪个时间在前,哪个时间在后

        Random r = new Random();

        //创建两个时间对象
        Date d1 = new Date(Math.abs(r.nextInt()));
        Date d2 = new Date(Math.abs(r.nextInt()));

        //获取两个对象的值,然后进行比较
        long time1 = d1.getTime();
        long time2 = d2.getTime();

        //比较
        if (time1 > time2) {
            System.out.println("第一个时间在后面,第二个时间在前面");
        }else if (time1 < time2) {
            System.out.println("第一个时间在前面,第二个时间在后面");
        }else {
            System.out.println("两个时间相等");
        }


    }

    private static void data() {
        //需求1:打印时间原点开始一年之后的时间
        //1、创建一个对象,表示时间原点
        Date d1 = new Date(0L);
        System.out.println(d1);

        //2、获取d1时间的毫秒值
        long time = d1.getTime();

        //3、在这个基础上我们添加一年的毫秒值
        time = time + 1000L * 60 * 60 * 24 * 365;

        //4、把计算之后的时间毫秒值,再设置回d1当中
        d1.setTime(time);

        //5、打印d1
        System.out.println(d1);
    }
}

总结

1、如何创建日期对象?

Date date = new Date();

Date date =new Date(指定毫秒值);

2、如何修改时间对象中的毫秒值

setTime(毫秒值);

3、如何获取时间对象中的毫秒值

getTime();

simpleDataFormat类

作用

  • 格式化:把时间变成我们喜欢的格式。 ==>2024年3月26日
  • 解析:把字符串表示的时间变成Data对象。

simpleDataFormat类的构造方法:

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

simpleDataFormat类练习

package jdk7;

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

public class SimpleDateFormatExample {
    public static void main(String[] args) {
        /*
            public SimpleDateFormat() 默认格式
            public SimpleDateFormat(String pattern) 指定格式

            public final String format(Date date) 格式化(日期对象 -> 字符串)
            public Date parse(String source) 解析(字符串 -> 日期对象)
        */

        // 设置地区为中文
        Locale locale = Locale.CHINESE;

        //1.利用空参构造创建simpleDateFormat对象,默认格式
        SimpleDateFormat sdf1 = new SimpleDateFormat();
        Date d1 = new Date(0L);
        String str1 = sdf1.format(d1);
        System.out.println(str1);//1970/1/1 上午8:00

        // 1、利用空参构造创建SimpleDateFormat对象,指定格式
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒", locale);
        Date d2 = new Date(0L);
        String str2 = sdf2.format(d2);
        System.out.println(str2);

        //加个星期 EEEE
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日 EEEE HH时mm分ss秒", locale);
        Date d3 = new Date(0L);
        String str3 = sdf3.format(d3);
        System.out.println(str3);
    }
}

package jdk7;

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

public class SimpleDateFormatExample {
    public static void main(String[] args) throws ParseException {
        /*
            public SimpleDateFormat() 默认格式
            public SimpleDateFormat(String pattern) 指定格式

            public final String format(Date date) 格式化(日期对象 -> 字符串)
            public Date parse(String source) 解析(字符串 -> 日期对象)
        */

        // 设置地区为中文
        Locale locale = Locale.CHINESE;

        //1、定义一个字符串表示时间
        String str = "2024-3-26 11:11:11";
        //利用空参构造创建simpleDateFormat对象
        //细节:就是我们下面创建的对象需要与上面的格式保持一致
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-dd HH:mm:ss");
        Date data = sdf.parse(str);
        System.out.println(data.getTime()); //1711422671000
        
    }
    
}

练习

按照指定格式展示

假设,你初恋的出生年月日为:2000-11-11

请用字符串表示这个数据,并将其转换为:2000年11月11日

package jdk7;

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

public class SimpleDateFormatExample_test {
    public static void main(String[] args) throws ParseException {
        /*
            假设,你初恋的出生年月日为:2000-11-11
            请用字符串表示这个数据,并将其转换为:2000年11月11日

            创建一个Date对象表示2000年11月11日
            创建一个SimpleDateFormat对象,并定义格式为年月日把时间变成:2000年11月11日
        */

        //1.可以通过2000-11-11进行解析,解析成一个Date对象
        String str = "2000-11-11";
        //2、解析
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        Date data = sdf1.parse(str);
        //3、格式化
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd天");
        String result = sdf2.format(data);
        System.out.println(result);
    }
}

秒杀活动

package jdk7;

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

public class SimpleDateFormatExample_test2 {
    public static void main(String[] args) throws ParseException {
          /* 需求:
            秒杀活动开始时间:2023年11月11日 0:0:0(毫秒值)
            秒杀活动结束时间:2023年11月11日 0:10:0(毫秒值)

            小贾下单并付款的时间为:2023年11月11日 0:01:0
            小皮下单并付款的时间为:2023年11月11日 0:11:0
            用代码说明这两位同学有没有参加上秒杀活动?
         */

        //1.定义字符串表示三个时间
        String startstr = "2023年11月11日 0:0:0";
        String endstr = "2023年11月11日 0:10:0";
        String orderstr = "2023年11月11日 0:01:00";
        //2.解析上面的三个时间,得到Date对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
        Date startDate = sdf.parse(startstr);
        Date endDate = sdf.parse(endstr);
        Date orderDate = sdf.parse(orderstr);

        //3.得到三个时间的毫秒值
        long startTime = startDate.getTime();
        long endTime = endDate.getTime();
        long orderTime = orderDate.getTime();

        //4.判断
        if (orderTime >= startTime && orderTime <= endTime) {
            System.out.println("参加秒杀活动成功");
        } else {
            System.out.println("参加秒杀活动失败");
        }

    }
}

calendar类

  • Calendar代表了系统当前时间的日历对象,可以单独修改、获取时间中的年,月,日。
  • 细节:Calendar是一个抽象类,不能直接创建对象。

获取calendar日历对象的方法

方法名: public static calendar getInstance()

说明:获取当前时间的日历对象

calendar常用方法

练习

package jdk7;

import java.util.Calendar;
import java.util.Date;

public class calendar {
    public static void main(String[] args) {
         /*
            public static Calendar lgetInstance()               获取当前时间的日历对象
            public final Date getTime()                         获取日期对象
            public final setTime(Date date)                     给日历设置日期对象
            public long getTimeInMillis()                       拿到时间毫秒值
            public void setTimeInMillis(long millis)            给日历设置时间毫秒值
            public int get(int field)                           获取日期中的某个字段信息
            public void set(int field,int value)                修改日历的某个字段信息
            public void add(int field,int amount)               为某个字段增加/减少指定的值
        */

        //1.获取日历对象
        //细节1:Calendar是一个抽象类,不能直接new,而是通过一个静态方法获取到子类对象
        //底层原理:
        //会根据系统的不同时区来获取不同的日历对象,默认表示当前时间。
        //把会把时间中的纪元,年,月,日,时,分,秒,星期,等等的都放到一个数组当中
        //日 :纪元
        // 1 :年
        // 2 :月
        // 3 : 一年中的第几周
        // 4:一个月中的第几周
        // 5: 一个月中的第几天(日期)
        // ....

        //细节2:
        //月份:范围0~11 如果获取出来的是.那么实际上是1月。
        //星期:在老外的眼里,星期日是一周中的第一天
        //      1(星期日) 2(星期一) 3(星期二) 4(星期三) 5(星期四) 6(星期五) 7(星期六)

        //1、获取日历对象
        Calendar c = Calendar.getInstance();

        //2、修改下日历代表的时间
        Date d = new Date(0L);
        c.setTime(d);
        System.out.println(c);

        /*public int get(int field)                           获取日期中的某个字段信息
        public void set(int field,int value)                修改日历的某个字段信息
        public void add(int field,int amount)               为某个字段增加/减少指定的值*/

        //修改年、月
        c.set(Calendar.YEAR,2000);
        c.set(Calendar.MONTH,11); //默认+1

        //增加一个月
        c.add(Calendar.MONTH,1);

        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH) + 1;
        int data = c.get(Calendar.DAY_OF_MONTH);
        int week = c.get(Calendar.DAY_OF_WEEK);
        System.out.println(year + "," + month + "," + data + "," + getWeek(week)); //2001,1,1,星期一


    }
    //查表法://表:容器
    //让数据跟索引产生对应的关系
    //传入对应的数字: 1 ~7//返回对应的星期
    public static String getWeek(int index) {
        //定义一个数组,让汉字星期几 跟1~7产生对应关系
        String[] arr = {"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        //根据索引返回对应的星期
        return arr[index];

    }
}

总结

  • 1、Calendar表示什么?

    表示一个时间的日历对象

  • 2、如何获取对象

    通过getlnstance方法获取对象

  • 3、常见方法

    set xxx:修改

    get xxx:获取

    add:在原有的基础上进行增加或者减少

  • 4、细节点:

    日历类中月份的范围:0-11

    日历类中星期的特点:星期日是一周中的第一天

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1548232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

js实现拖放效果

dataTransfer对象 说明&#xff1a;dataTransfer对象用于从被拖动元素向放置目标传递字符串数据。因为这个对象是 event 的属性&#xff0c;所以在拖放事件的事件处理程序外部无法访问 dataTransfer。在事件处理程序内部&#xff0c;可以使用这个对象的属性和方法实现拖放功能…

Linux(centos7)部署hadoop集群

部署环境要求:已完成JDK环境部署、配置完成固定IP、SSH免费登录、防火墙关闭等。 1、下载、上传主机 官网:https://hadoop.apache.org 2、解压缩、创建软连接 解压: tar -zxvf hadoop-3.3.6.tar.gz软连接: ln -s /usr/local/apps/hadoop-3.3.6 hadoop3、文件配置 hadoo…

合辑下载 | MatrixOne 与 MySQL 全面对比

前言 MatrixOne是一款高度兼容MySQL语法的HTAP数据库&#xff0c;采用云原生化和存储、计算、事务分离的架构打造了HSTAP超融合数据引擎&#xff0c;实现单一数据库系统同时支持OLTP、OLAP、流计算等多种业务负载。基于MatrixOne高度兼容MySQL的定位&#xff0c;社区的小伙伴在…

多层陶瓷电容器(MLCC)的基本结构与特点

多层陶瓷电容器&#xff08;MLCC&#xff09;是一种电子元件&#xff0c;用于存储电荷和调节电路中的电容值。它们由多个陶瓷层组成&#xff0c;每个层之间夹有金属电极&#xff0c;然后堆叠在一起&#xff0c;并在两端连接上导体引线&#xff0c;形成一个整体结构。在外部通常…

【保姆级讲解如何下载MATLAB和安装MATLAB】

&#x1f308;博主&#xff1a;程序员不想YY啊&#x1f308; &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f3c6; &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 &#x1f91d;希望本文对您有所裨益&#xff0c;如有…

【Java程序设计】【C00384】基于(JavaWeb)Springboot的民航网上订票系统(有论文)

【C00384】基于&#xff08;JavaWeb&#xff09;Springboot的民航网上订票系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#x…

Linux的VirtualBox中USB设备无法选择USB3.0怎么办?

在VirtualBox中&#xff0c;如果遇到USB设备无法选择 USB 3.0 的问题&#xff0c;可以尝试按照以下步骤来解决&#xff1a; 确保VirtualBox版本支持USB 3.0&#xff1a;首先&#xff0c;你需要确认你的VirtualBox版本是否支持USB 3.0。一些较旧的版本可能不支持&#xff0c;因此…

09 网络ARP请求,响应,ICMP协议

arp协议_arp请求_arp回应 ICMP包构造ping搜狐服务器参考 #include <stdio.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <linux/if_packet.h> #include <linux/if_ether.h> #include <string.h> #includ…

加密软件VMProtect教程:使用脚本Mach-O文件

VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic&#xff08;本机&#xff09;、Virtual Pascal和XCode编译器。 同时&#xff0c;VMProtect有一个内置的反汇编程序&#xff0c;可以与Windows和Mac OS X可执行文件一起…

怎么制作iOS证书

首先我们登录appuploder官网 搜索 appuploder 第一个就是我们官网啦&#xff0c;网址是&#xff1a;Appuploader home -- A tool improve ios develop efficiency such as submit ipa to appstore and manage ios certificate 可以跨平台开发&#xff0c;无论是Windows还是Ma…

前端面试题---->JavaScript

const声明的对象属性和数组的值可以被修改吗&#xff1f;为什么 原因&#xff1a;当使用const声明一个对象或数组时&#xff0c;实际上是保证了对象或数组的引用不会被修改&#xff0c;但对象或数组本身的属性或元素是可以被修改的。这是因为const只能保证指向的内存地址不变&a…

搭载前净柔泉女冲技术的科勒马桶盖,你的家中必备

近几年智能家居逐渐成为众多家庭的首选&#xff0c;尤其是智能马桶已经逐渐变成家中必备&#xff0c;但智能马桶动辄几千上万的价格让很多家庭望而却步&#xff0c;于是智能马桶盖应运而生。科勒清舒宝智能便盖不仅可以适配市面上大多数马桶&#xff0c;而且功能丰富&#xff0…

基于springboot+vue调用百度ai实现车牌号识别功能

百度车牌号识别官方文档 结果视频演示 后端代码 private String getCarNumber(String imagePath, int count) {// 请求urlString url "https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate";try {byte[] imgData FileUtil.readFileByBytes(imagePath);Stri…

精酿啤酒:多阶段发酵工艺的特点与优势

Fendi Club啤酒采用多阶段发酵工艺&#xff0c;这种工艺在啤酒酿造中具有显著的特点和优势。 首先&#xff0c;多阶段发酵工艺是一种复杂的酿造过程&#xff0c;它包括多个阶段的发酵和陈化过程。这种工艺需要切确控制每个阶段的时间、温度和酵母种类等参数&#xff0c;以确保…

【揭秘】企讯通106短信通知:那些你不可不知的“幕后功臣”

在日常生活中&#xff0c;你是否留意过那些来自“106”开头的短信&#xff1f;它们悄无声息地出现在你的手机收件箱&#xff0c;为你带来账单提醒、验证码、优惠活动等各类重要信息。看似平淡无奇的“106短信通知”&#xff0c;实则蕴含着丰富的科技力量与智慧结晶。今天&#…

together.ai简介

Together AI Solutions | Fastest Tools for Building Private Models for Enterprise Quickstart

【linux深入剖析】基础IO操作 | 使用Linux库函数实现读写操作 | 文件相关系统调用接口

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 前言1.复习C文件IO相关操…

设计模式深度解析:深入浅出的揭秘游标尺模式与迭代器模式的神秘面纱 ✨

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 深入浅出的揭秘游标尺模式与迭代器模式的神秘面纱 开篇&#xff1a; 欢迎来到设计模式的神秘…

如何在数字化转型中确保数据安全

随着科技的飞速发展&#xff0c;数字化转型已成为企业发展的必然趋势。数字化转型是指企业利用数字技术对业务流程、组织结构和商业模式进行全面创新和变革&#xff0c;以提高企业的竞争力和创新能力。然而&#xff0c;在数字化转型过程中&#xff0c;数据安全问题日益凸显&…

胖东来:超越零售巨头山姆和Costco的秘密武器

在零售业的江湖中&#xff0c;胖东来这个名字正在悄然崭露头角。3月26日&#xff0c;胖东来创始人于东来豪言壮志地表示&#xff0c;未来3-5年内&#xff0c;他的目标是超越零售巨头山姆和Costco。这不仅仅是一个口号&#xff0c;而是胖东来凭借自身实力&#xff0c;逐步迈向更…