Java中的日期与时间

news2024/11/20 8:29:05

J a v a 中的日期与时间 \huge{Java中的日期与时间} Java中的日期与时间

J a v a Java Java中有很多类是专门用于描述日期类的。

Date类

D a t e Date Date类:用于表示当前所在系统的日期时间信息。

Date类的构造器

在这里插入图片描述
示例:

Date d = new Date();
System.out.println(d);

上述代码的结果为:
在这里插入图片描述
打印出来的是当前系统的时间,并且是格式化好的(非常的友好),也就说明new一个Date类,它里面存储的就是当前系统的时间。

常用的API:getTime()

g e t T i m e ( ) getTime() getTime():返回从 1970.01.01   00 : 00 : 00 1970.01.01 \space 00:00:00 1970.01.01 00:00:00到现在系统时间所对应的毫秒数
在这里插入图片描述
示例:

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

//System类中也有currentTimeMillis()方法
//可以起到相同的作用
long time1 = System.currentTimeMillis();
System.out.println(time1);

运行结果:
在这里插入图片描述
非常的难看(谁会闲着没事看时间毫秒数)
就像上面说的那样,单独看时间毫秒值真的非常的难看,但是将时间毫秒值结合两个方法在一起,就非常的有用啦,看下面:

在这里插入图片描述
一个构造方法一个 D a t e Date Date类自带的方法可以将时间毫秒值转换为存储相应时间的 D a t e Date Date类,这就很有用了。比方说计算一个日期经过多长时间到了那个日期,就可以首先统一转换为时间毫秒值,然后相加,在将最后的加和转换为相应的 D a t e Date Date类打印即可。给一个应用场景:
在这里插入图片描述
就按照上面那个思路来:

//1. 得到当前的时间
Date d1 = new Date();

//2. 得到当前时间的时间毫秒值
long time = d1.getTime();

//3. 当前的时间 + 转换的时间 = 转换后时间     均已时间毫秒值描述
time += (60 * 60 + 121) * 1000;

//4. 结合转换后的时间生成转换后的Date类
Date d2 = new Date(time)

//5. 打印
System.out.println(d2)

完美解决!!!! ✔ \red{✔}

Date类小总结

D a t e Date Date类对象生成的时候存储的就是当前的系统时间,打印就是格式化打印(友好), g e t T i m e ( ) getTime() getTime()方法获得时间毫秒值,可以进行时间转换计算, s e t T i m e ( ) setTime() setTime()方法可以利用时间毫秒值来为 D a t e Date Date对象进行改值,并且 D a t e Date Date类对象的构造方法支持传入时间毫秒值进行构造。

SimpleDateFormat类

S i m p l e D a t e F o r m a t SimpleDateFormat SimpleDateFormat类就是用来格式化日期形式的,比方说:
在这里插入图片描述
这个形式不太方便让人读(个人感觉已经很好读了),或者下面这个:
在这里插入图片描述
这个更是重量级,只是针对于时间信息来讲毫无可读性,再看看这个:
在这里插入图片描述
看那哪里舒服,那么这里:
在这里插入图片描述
这个之间转换过程就需要 S i m p l e D a t e F o r m a t SimpleDateFormat SimpleDateFormat类来进行操作。
再次介绍一下 S i m p l e D a t e F o r m a t SimpleDateFormat SimpleDateFormat就是代表着简单日期的格式化,可以用来把日期格式化为你自己想要的形式。
在这里插入图片描述

构造器与构造方法

在这里插入图片描述

示例:

//1. 定义Date类获取当前系统的时间信息
Date d = new Date();

//2. 定义日期格式化类(为什么后面的格式化这样写呢,下面有格式化规则)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");

//3. 开始进行格式化
String rs = sdf.format(d);

//4. 打印即可,现在rs中存储的就是格式化之后的结果
System.out.println(rs);

运行结果:
在这里插入图片描述
上面写了 f o r m a t format format方法也可以格式化时间毫秒值。
示例:

//格式化一下当前时间过去121秒之后的时间
long time = System.currentTimeMillis() + 121 * 1000;
String rs2 = sdf.format(time);
System.out.println(rs2);

格式化形式对应表:
在这里插入图片描述
❗另外EEE代表当前是周几,a代表当前是上午还是下午。

parse()

给定一个应用场景:
在这里插入图片描述
在购买车票的时候,用户所能做的就是输入自己的信息,而且这个信息是以字符串形式输入的,那么可不可以直接将字符串类型的数据转换为 D a t e Date Date类型呢?
可以的,就是 p a r s e ( ) parse() parse()这个方法。
在这里插入图片描述
示例:

public class SimpleDateFormatDemo2 {
    public static void main(String[] args) throws ParseException {
        // 目标: 学会使用SimpleDateFormat解析字符串时间成为日期对象。
        // 有一个时间 2021年08月06日 11:11:11 往后 2天 14小时 49分 06秒后的时间是多少。
        // 1、把字符串时间拿到程序中来
        String dateStr = "2021年08月06日 11:11:11";

        // 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() + (2L*24*60*60 + 14*60*60 + 49*60 + 6) * 1000;

        // 4、格式化这个时间毫秒值就是结果
        System.out.println(sdf.format(time));
    }
}

❗❗❗使用 p a r s e ( ) parse() parse()这个方法的时候, s d f sdf sdf s t r str str的关系是: s d f sdf sdf构造是输入的形式必须与要转换的 s t r str str格式相同(这个相同指的是严格相同,空格都必须相同!!!!)只有这样才能够正确的转化。

Calendar类

C a l e n d a r Calendar Calendar类代表了系统此刻日期对应的日历类,是一个抽象类,不能直接调用构造方法,只能调用 g e t I n s t a n c e ( ) getInstance() getInstance()方法来获取当前日历对象:
在这里插入图片描述
本着抽象类不能创建对象来说,源码里面应该有多态的使用吧(其实就是没看懂源码)。

常用API

在这里插入图片描述
示例:

public class CalendarDemo{
    public static void main(String[] args) {
        // 1、拿到系统此刻日历对象
        //值得注意的是calendar是个引用数据类型
        //所以直接打印cal,打印出来的是对应的存储地址
        Calendar cal = Calendar.getInstance();
        System.out.println(cal);

        // 2、获取日历的信息:public int get(int field):取日期中的某个字段信息。
        int year = cal.get(Calendar.YEAR);		//取cal存储的年份
        System.out.println(year);

        int mm = cal.get(Calendar.MONTH) + 1;		//cal存储的月份:0~11
        System.out.println(mm);

        int days = cal.get(Calendar.DAY_OF_YEAR);	//今天是一年中第几天
        System.out.println(days);

        // 3、public void set(int field,int value):修改日历的某个字段信息。
        cal.set(Calendar.HOUR , 12);
        System.out.println(cal);

        // 4.public void add(int field,int amount):为某个字段增加/减少指定的值
        // 请问64天后是什么时间
        cal.add(Calendar.DAY_OF_YEAR , 64);
        cal.add(Calendar.MINUTE , 59);

        //  5.public final Date getTime():拿到此刻日期对象,注意这里返回的是日期对象
        Date d = cal.getTime();
        System.out.println(d);

        //  6.public long getTimeInMillis(): 拿到此刻时间毫秒值
        long time = cal.getTimeInMillis();
        System.out.println(time);

    }
}

★ \red{★} 直接一提的是这个 s e t ( ) set() set()方法,日历类本来记录的就是时间,大多数也是记录当前的时间,使用 s e t ( ) set() set()去修改里面的内容,属实有点多余,所以用的很少
★★ \red{★★} ★★ a d d add add方法也会根据你前面填写的数据来自动匹配后面的类型

Calendar小总结

能背就背,背不了就查 \huge{能背就背,背不了就查} 能背就背,背不了就查

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

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

相关文章

12月第3周榜单丨B站UP主排行榜(飞瓜数据B站)发布!

飞瓜轻数发布2022年12月12日-12月18日飞瓜数据UP主排行榜(B站平台),通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况,为用户提供B站号综合价值的数据参考,根据UP主成长情况用户能够快速找到运营能力强的…

Redis高级篇

redis的四个问题: 1.Redis是基于内存存储,服务重启可能会丢失数据; 2.并发能力问题:单节点Redis能力虽然不错,但也无法满足如618这种高并发的场景(618并发 数量达到数十万甚至上百万); 3.如果reids宕机,服务不可用,则需要一种自动的故障恢复手段; 4.存…

自学Python可以找到工作吗?

自学Python可以找到工作吗?自学Python找工作主要看自己的学习能力,自学能力很强学完并精通当然可以工作,不过对于大多数人而言一般都挺难,学习不成系统,遇到问题没人解决很容易放弃半途而废。 学Python能干很多很多事…

NodeJS安装-Vue模块化项目构建

NodeJS安装-Vue模块化项目构建 一、环境准备(NodeJS安装) 1. 安装NodeJS 官网自行下载,并安装 2. 配置npm的全局安装路径 npm config set prefix "D:\soft_install\dev\qianduan_dir\nodejs"3. 切换npm的淘宝镜像&#xff0c…

C++11标准模板(STL)- 算法(std::is_permutation)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 判断一个序列是否为另一个…

《记忆力心理学》5个方法 让你过目不忘

《记忆力心理学》 关于作者 赫尔曼•艾宾浩斯&#xff0c;西方心理学泰斗级人物&#xff0c;生活在19世纪的德国心理学家。他是最早用实验的方法对记忆进行量化研究的 人&#xff0c;最受人瞩目的贡献&#xff0c;就是发现了记忆保持曲线。 关于本书 这本书可以看作是记忆心…

全国职业院校技能大赛网络搭建与应用赛项——云平台底层的一些命令

1.列出运行的虚拟机 virsh list 2.列出所有的虚拟机virsh list --all 3.网络信息表&#xff08;20分&#xff09; 显示网络名及所在的vlan idopenstack network show Network10 -c name -c provider:segmentation_id openstack network show Network20 -c name -c provider:s…

学习->C++篇十九:四种智能指针及其实现

目录 为什么需要智能指针&#xff1f; 什么是内存泄露&#xff1f; 如何避免内存泄露&#xff1f; 什么是RAII&#xff1f; RAII有什么用&#xff1f; 智能指针的原理是什么&#xff1f; C的智能指针有哪些&#xff1f; auto_ptr unique_ptr shared_ptr weak_ptr 为什…

【第十五章 分库分表(垂直拆分,水平拆分),MyCat】

第十五章 分库分表&#xff08;垂直拆分&#xff0c;水平拆分&#xff09;&#xff0c;MyCat 1.分库分表&#xff1a; &#xff08;1&#xff09;介绍&#xff1a; ①采用单数据库进行数据存储&#xff0c;存在以下性能瓶颈&#xff1a; A.IO瓶颈&#xff1a;热点数据太多&…

第二证券|A股传奇董秘变身老板,公司IPO过会

A股传奇董秘何愿平卷土重来&#xff0c;但这次不是以董秘的身份。 12月20日&#xff0c;碧兴科技IPO获科创板上市委会议经过&#xff0c;其实控人正是A股曾经的传奇董秘何愿平。作为前碧水源董秘&#xff0c;何愿平曾多年连任A股身家最贵董秘。 二次创业过会 招股书显现&…

离散化算法

目录 算法原理 算法模板 1&#xff09;手工编码 2&#xff09;c用STL函数实现离散化 附录&#xff1a; 算法原理 给出一列数字&#xff0c;在有些情况下&#xff0c;这些数字的值得绝对大小不重要&#xff0c;而相对大小很重要。例如&#xff0c;对一个班级学生的成绩进行…

图片加水印怎么弄?这些图片加水印方法分享给你

相信很多小伙伴平常会喜欢将自己拍摄的作品上传到社交平台上与他人分享吧。然而有时会遇到自己辛苦拍摄的视频或者图片被他人盗用&#xff0c;甚至是获利的情况。其实想要避免自己的作品被他人盗用&#xff0c;我们可以在作品上面添加专属自己的水印&#xff0c;不仅可以给作品…

Java学生成绩管理系统

1、内容要求 编写一个学生成绩管理系统。学生的属性包括学号、姓名、年龄等。每个学生要学习若干课程&#xff0c;每门课程有平时成绩、期中考试成绩、期末考试成绩以及总评成绩&#xff0c;其中总评成绩平时成绩*30%期中成绩*30%期末成绩*40%。请先设计合理的类存放这些信息&a…

Span-level Bidirectional Network(2022 EMNLP)

论文题目&#xff08;Title&#xff09;&#xff1a;A Span-level Bidirectional Network for Aspect Sentiment Triplet Extraction 研究问题&#xff08;Question&#xff09;&#xff1a;方面情感三元组提取(ASTE)是一种新的细粒度情感分析任务&#xff0c;旨在从评论句中提…

【ML】机器学习中的十大深度学习算法

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

RTOS多任务切换实现

实现任务需要的基础知识 1、程序内部细节 通过分析C语言程序的编码会发现程序都是一些指令和数据。 什么是程序&#xff1f; 指令运行过程中的数据 2、常用汇编指令 汇编指令详解 3、ARM架构过程调用标准AAPCS 传参&#xff1a; 通过r0-r3传递&#xff0c;多于4个参数的部…

【矩阵论】6. 范数理论——基本概念——向量范数与矩阵范数

6.1 基本概念 6.1.1 向量范数 a. 模长&#xff08;二范数&#xff09; Cn中向量X(x1x2⋮xn)的模长为∣X∣(X,X)tr(AHA)∣x1∣2∣x2∣2⋯∣xn∣2C^n中向量 X\left( \begin{matrix} x_1\\x_2\\\vdots\\x_n \end{matrix} \right)的模长为 \vert X\vert\sqrt{(X,X)}\sqrt{tr(A^HA…

nginx+keeplived 实现高可用 Web 负载均衡

nginxkeeplived 实现高可用 Web 负载均衡 一、架构简介 在系统设计中&#xff0c;可以利用Nginx的反向代理和负载均衡实现后端应用的高可用性&#xff0c;同时我们还需要考虑Nginx的单点故障。如果Nginx所在服务器宕机&#xff0c;或者Nginx服务不可用就会造成整个系统的不可…

鸡蛋车的控制律

这个老头像幽灵&#xff0c; ​拿个鸡蛋来炸群。 ​只见动画不见车&#xff0c; ​骗人无果还丢人&#xff01; 温州一个做汽车驾驶模拟器的&#xff0c;在重庆为我约了美女&#xff0c;为鸡蛋车站台。他掏空口袋砸我&#xff0c;材料、工资、车马&#xff0c;都是他担。 余姚一…

代码随想录算法训练营第十天(字符串)| 232.用栈实现队列,225. 用队列实现栈

代码随想录算法训练营第九天&#xff08;字符串&#xff09;| 232.用栈实现队列&#xff0c;225. 用队列实现栈 232. 用栈实现队列 大家可以先看视频&#xff0c;了解一下模拟的过程&#xff0c;然后写代码会轻松很多。 题目链接/文章讲解/视频讲解&#xff1a; 看到题目的…