Java基础:JDK7-时间Date

news2025/1/11 23:55:48

JDK7以前时间相关类

1.Date

Date date = new Date(); , sout(date)得到的是现在所处位置的时间

Date date = new Date(0L); , sout(date)得到的是时间原点也就是1970年1月1日08:00(东八区).

date.setTime(1000L); sout(date)得到的是时间原点后一秒钟的时间

long time = date.getTime(); sout(date)得到的是date所处时间距离时间原点的毫秒数.

1.1总结

2.SimpleDateFormat

2.1作用

 2.2构造方法和成员方法

 

// 此时此刻的时间
        Date date = new Date();
        // 时间原点的时间
        Date date1 = new Date(0L);
        System.out.println(date);// Wed Mar 01 10:48:59 CST 2023

        // 时间原点之后1秒的时间
        date.setTime(1000L);
        System.out.println(date);// Thu Jan 01 08:00:01 CST 1970

        // 获取date的时间距离原点时间的毫秒值
        long time = date.getTime();
        System.out.println(time);// 1000

        // 需求一:时间原点一年后的时间
        date.setTime(365 * 24 * 60 * 60 * 1000L);
        System.out.println(date);// Fri Jan 01 08:00:00 CST 1971

        // 需求二:比较两个Date对象哪个在前哪个在后
        Date date2 = new Date(100L);
        Date date3 = new Date(1000L);

        long time2 = date2.getTime();
        long time3 = date3.getTime();

        long max = Math.max(time2, time3);
        System.out.println(max);

        // simpledateformat
        // 空参构造是默认格式
        SimpleDateFormat sdf = new SimpleDateFormat();
        // 格式化(需要Date对象, 输出默认格式的时间字符串)
        Date date4 = new Date(1000000000000L);
        String format = sdf.format(date4);
        System.out.println(format);// 2001/9/9 上午9:46

        // 有参构造(设置格式Pattern)
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM/dd  HH/mm-ss EE");
        // 格式化(需要Date对象, 输出默认格式的时间字符串)
        Date date5 = new Date(2000000000000L);
        String format2 = sdf2.format(date5);
        System.out.println(format2);// 2033-05/18  11/33-20 周三

        // 解析(字符串->Date对象)
        // 生成要解析的字符串
        String datetest = "2023-5-20  13:14";
        // 生成SDF, 必须要和上面的字符串格式对应
        SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-M-dd  HH:mm");
        // 调用解析方法, 输入要解析的字符串, 返回Date对象
        Date parse = sdf3.parse(datetest);
        long time1 = parse.getTime();
        System.out.println(time1);// 1684559640000

2.3练习1

// practice1
        String birthday = "2000-11-11";
        SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd");
        Date parse1 = sdf4.parse(birthday);
        SimpleDateFormat sdf5 = new SimpleDateFormat("yyyy年MM月dd日");
        String format1 = sdf5.format(parse1);
        System.out.println(format1);

2.4练习2

// practice2
        // start time
        String starttime = "2023-11-11  00:00:00";
        String endtime = "2023-11-11  00:10:00";
        String xiaojia = "2023-11-11  00:01:00";
        String xiaopi = "2023-11-11  00:11:00";
        SimpleDateFormat sdf6 = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");

        Date startdate = sdf6.parse(starttime);
        Date enddate = sdf6.parse(endtime);
        Date xiaojiadate = sdf6.parse(xiaojia);
        Date xiaopidate = sdf6.parse(xiaopi);

        long startdateTime = startdate.getTime();
        long enddateTime = enddate.getTime();
        long xiaojiadateTime = xiaojiadate.getTime();
        long xiaopidateTime = xiaopidate.getTime();

        extracted(startdateTime, enddateTime, xiaojiadateTime);
        extracted(startdateTime, enddateTime, xiaopidateTime);

提取的方法, 用来判断是否参加上 

private static void extracted(long startdateTime, long enddateTime, long Time) {
        if (Time >= startdateTime && Time <= enddateTime){
            System.out.println("参加上了");
        }else {
            System.out.println("没参加上");
        }
    }

3.calendar

3.1获得calendar类

由于calendar是抽象类, 所以不能够直接创建对象, 需要通过getInstance方法来获得.

获取到的calendar对象会根据系统的不同时区来获取不同的日历对象,默认表示当前时间。
会把时间中的纪元,年,月,日,时,分,秒,星期,等等的都放到一个数组当中.

月份:范围0~11如果获取出来的是0.那么实际上是1月。

星期:在老外的眼里,星期日是一周中的第一天
1(星期日)2(星期一)3(星期二)―4(星期三)―5(星期四)6(星期五)―7(星期六)

Calendar中数组的索引对应的内容是 : 

0 : 纪元

1 : 年
2 : 月
3 : 一年中的第几周
4 : 一个月中的第几周
5 : 一个月中的第几天(日期)

3.2常用方法

使用get方法时, 输入Calendar数组中的索引值(在Calendar类中定义为了常量)

注意 : 获得的int要转化成我们自己的时间(星期和月份)

// calendar
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);// java.util.GregorianCalendar[time=1677654807019,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2023,MONTH=2,WEEK_OF_YEAR=9,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=60,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=13,SECOND=27,MILLISECOND=19,ZONE_OFFSET=28800000,DST_OFFSET=0]
        // get Date calendar
        Date time4 = calendar.getTime();
        System.out.println(time4);// Wed Mar 01 15:10:54 CST 2023
        // set Date to Calendar
        Date date6 = new Date(5201314);
        calendar.setTime(date6);
        System.out.println(calendar);

        // get
        int year = calendar.get(Calendar.YEAR);
        int mouth = calendar.get(Calendar.MONTH) + 1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int week = calendar.get(Calendar.DAY_OF_WEEK);

        System.out.println(year + "-" + mouth + "-" + day + getweek(week));

        // modify year, mouth, day... of calendar
        calendar.set(Calendar.YEAR, 1999);
        calendar.set(Calendar.MONTH, 10);
        calendar.set(Calendar.DAY_OF_MONTH, 31);
        System.out.println(calendar);

        // add year, mouth, day... of calendar
        calendar.add(Calendar.YEAR, 2);
        calendar.add(Calendar.MONTH, 1);
        calendar.add(Calendar.DAY_OF_MONTH, -10);
        System.out.println(calendar);

获得符合我们的星期getweek()方法 

private static String getweek(int index){
        String[] week = {"", "星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        return week[index];
    }

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

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

相关文章

【matplotlib】可视化解决方案——如何设置matplotlib风格集

概述 一般情况下&#xff0c;为了获得数据可视化展示效果&#xff0c;在代码实现的尾部会调用 plt.show()&#xff0c;这种情况下会调用默认的绘图风格&#xff0c;即白色底色&#xff0c;字体和线条呈现黑色。在某些情况下会显得很不协调。如果想要将展示效果以一个固定的风格…

华为OD机试用Python实现 -【称砝码】(2023-2-26华为OD机试人员抽到的真题)

华为OD机试题 华为 OD 机试 300 题大纲称砝码题目输入输出示例一输入输出说明:Python 代码展示编码思路华为 OD 机试 300 题大纲 参加华为 od 机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:blog.csdn.net/hihell/categor…

【JavaSE】集合(Map)

文章目录1.Map接口1.1常用方法1.2 遍历2.HashMap2.1Hash表数据结构2.2 Map.put实现原理2.3 Map.get实现原理2.4扩容2.5 同时重写hashCode和equals2.6 JAVA8对HashMap改进3.Hashtable4.Properties5.TreeMap5.1 概述5.2 自定义类实现Comparable6.集合工具类Collections1.Map接口 …

Linux | 1. 挂载新硬盘与磁盘管理

如有错误&#xff0c;恳请指出。 1. Ubuntu挂载新硬盘 查看磁盘状态&#xff1a;sudo fdisk -l 1&#xff09;为新硬盘分区 使用 fdisk 指令对 /dev/sdb 进行分区操作&#xff1a;sudo fdisk /dev/sdb。进入分区工具后&#xff0c;我们可以输入 m 看指令说明&#xff0c;注意…

(四十八)大白话线上数据库不确定性的性能抖动优化实践(上)

之前我们花费了很大篇幅来给大家深入和细致的讲解数据库在执行增删改这类更新语句时候的底层原理&#xff0c;这里涉及到了很多数据库内核级的概念&#xff0c;比如buffer pool、redo log buffer、lru/flush链表&#xff0c;等等&#xff0c;大家对数据库执行更新语句的原理都有…

黑客入门破解网络密码常用的九个方法!

个人网络密码安全是整个网络安全的一个重要环节&#xff0c;如果个人密码遭到黑客破解&#xff0c;将引起非常严重的后果。比如&#xff0c;银行卡账户密码被盗&#xff0c;你就给别人打工了。所以&#xff0c;增强网民的网络安全意识是网络普及进程的一个重要环节。 常言道&am…

ThreadPoolExecutor执行流程和拒绝策略

【面试常考】 之前我们讲到的多线程案例里面的Executors 本质上是 ThreadPoolExecutor 类的封装. ThreadPoolExecutor 提供了更多的可选参数, 可以进一步细化线程池行为的设定. 什么是ThreadPoolExcutor类&#xff1f; 首先通过文档我们看看ThreadPoolExcutor提供给我们的构造…

超详细彻底卸载Anaconda详细教程

一、在开始出打开Anaconda Prompt 二、打开后&#xff0c;输入conda install tqdm -f命令并按回车键 conda install tqdm -f三、之后页面会出现一个WANNING&#xff0c;这个我们不用在意&#xff0c;之后会出现一个y/n提示框&#xff0c;在这里我们输入y或者Y y四、输入con…

小程序容器与微服务架构的关系

随着移动互联网的发展&#xff0c;小程序已经成为了一种非常流行的应用方式&#xff0c;它可以在不安装任何应用的情况下&#xff0c;直接在移动终端设备&#xff08;如&#xff1a;App&#xff0c;iPad等&#xff09;中运行。微服务架构则是一种的分布式系统架构&#xff0c;可…

SpringBoot整合MybatisPlus多数据源

相信在很多使用MybatisPlus框架的小伙伴都会遇到多数据源的配置问题&#xff0c;并且官网也给出了推荐使用多数据源 (dynamic-datasource-spring-boot-starter) 组件来实现。由于最近项目也在使用这个组件来实现多数据源切换&#xff0c;因此想了解一下该组件是如何运行的&…

以太网协议和DNS

目录 &#x1f415;今日良言:跨过困难,去迎接更好的自己. &#x1f433;一、以太网桢格式 &#x1f433;二、DNS &#x1f415;今日良言:跨过困难,去迎接更好的自己. &#x1f433;一、以太网桢格式 数据链路层考虑的是相邻两个节点(通过网线/光纤/无线直接相连的两个设备…

有趣的表盘布局环绕动画

前言 C端的介绍页中&#xff0c;设计师设计动画特效都非常有意思。这次遇到了“表盘内容元素环绕效果”&#xff0c;类似于表盘中的分针在一格一格运动一样&#xff0c;只是这次动画运动的元素不一样。 效果如下&#xff1a; 实现表盘布局 合理的运用JavaScrip的三角函数&am…

Malware Dev 01 - 免杀之 PPID Spoofing 原理解析

写在最前 如果你是信息安全爱好者&#xff0c;如果你想考一些证书来提升自己的能力&#xff0c;那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里&#xff1a; https://discord.gg/9XvvuFq9Wb我会提供备考过程中尽可能多的帮助&#xff0c;并分享学习和实践过程…

第十五天笔记

1. 编程实现计算2023-2-1到2023-3-1相隔多少天&#xff1f; from datetime import datetimestart_date_str "2023-2-1"end_date_str "2023-3-1"start_date datetime.strptime(start_date_str, "%Y-%m-%d")end_date datetime.strptime(end_d…

pmp项目管理考完有什么好处?

作为曾经5A&#xff08;现在改3A了&#xff09;通过考试的老学姐说下经验 做好规划 一定要合理安排自己预习、复习和做题的时间&#xff0c;提前规划。其中不要小看课前预习这件事&#xff0c;带着问题去上课&#xff0c;绝对能事半功倍。同时也能及时知道老师到底在讲解哪个知…

网络安全入门:不可不知的8款免费Web安全测试工具

随着 Web 应用越来越广泛&#xff0c;Web 安全威胁日益凸显。黑客利用网站操作系统的漏洞和 Web服务程序的 SQL 注入漏洞等得到Web服务器的控制权限&#xff0c;轻则篡改网页内容&#xff0c;重则窃取重要内部数据&#xff0c;更为严重的则是在网页中植入恶意代码&#xff0c;使…

互联网时代,学什么专业就业好?

互联网时代的手机、智能电视、家具、机械设备等各种有形产品都将会嵌入智能芯片&#xff0c;都会有嵌入式软件或App与之相连&#xff0c;从而形成智能产品。这是我们开启智能化硬件的开始&#xff0c;在这样的环境下&#xff0c;如果要问学什么就业最好&#xff1f;当然首选Jav…

串口、终端应用程序 API termios

UART简介 串口全称为串行接口&#xff0c;也称为COM接口&#xff0c;串行接口指的是比特一位位顺序传输&#xff0c;通信线路简单。使用两根线就可以实现双向通信&#xff0c;一条为TX&#xff0c;一个为RX。串口通信距离远&#xff0c;但速度相对慢&#xff0c;是一种常用的工…

软测入门(二)测试用例、自动化测试理念

测试用例&#xff08;test case&#xff09; 特性 有效性&#xff1a;测试用例能够被使用&#xff0c;且被不同的人员使用测试结果一致可复用性&#xff1a;如回归测试的使用可评估性可管理性 八大要素 测试编码&#xff1a;方便归档和查询测试模块/功能预置条件&#xff1a…

2023年功能测试还值得入行吗?

前言 鉴于笔者从13年入行IT行业&#xff0c;经历了只有开发没有测试的阶段&#xff0c;经历了14年只要会基本的功能测试在一线就能薪资过万的阶段&#xff0c;经历了17年只要会一点自动化&#xff0c;会一点性能就能蒙骗过面试官的阶段&#xff0c;更经历了19年所有面试官对于…