(十七)Java的时间与日期(1)

news2024/12/23 5:22:22

目录

        前言:

        ①Date类

        ②SimpleDateFormat类

        ③Calendar


前言:

        时间和日期. 在系统开发中,日期与时间作为重要的业务因素,起到十分关键的作用,例如同一个时间节点下的数据生成,基于时间范围的各种数据统计和分析,集群节点统一时间避免超时等。. 在时间和日期中有几个关键概念:. 日期:通常年月日的组合表示当前日期。. 时间:通常时分秒的组合表示当前时间。. 时区:世界各国家与地区经度不同,划分24个标准时区,相邻时区的时间相差一个小时。. 时间戳:从UTC时间的 1970-1-1 00:00:00 起到现在的总秒数。. 日期和时间的用法在系统中通常是获取时间和一些常见的计算与格式转换处理,在一些垮时区的业务中就会变的复杂很多,例如在电商业务中的全球贸易或者海淘等。

①Date类

1.概述:

        Date类的对象在java中代表的是当前所在系统的此刻日期时间。

2.Date的构造器

 

3.Date的常用方法:

  

4.Date类记录时间的2种形式:

形式1:日期对象

形式2:时间毫秒值

        指的是从1970年1月1日 00:00:00走到此刻的总的毫秒数,应该是很大的。

 

5.代码演示:

import java.util.Date;
/**
 * Date类的对象在java中代表的是当前所在系统的此刻时间
 * getTime 获取时间毫秒值
 */
public class Date_Test {
    public static void main(String[] args) {
        //1.创建一个Date类的对象,代表系统此刻日期对象
        Date d = new Date();
        System.out.println(d);
​
        //2.获取时间毫秒值
        long time = d.getTime();
        System.out.println(time);
        //public Date (long time) 把时间毫秒值转换成Date日期对象
        //public void setTime(long time) 设置日期对象的时间为当前时间毫秒值对应的时间
​
        System.out.println("------------");
        //1、得到当前时间毫秒值
        long d1 = System.currentTimeMillis();
        System.out.println(d1);
        //2、计算当前时间往后走1小时121秒
        long time2 = System.currentTimeMillis();
        time2 += (60*60*121)*1000;
        //3、把时间毫秒值转换成对应的日期对象
        Date d2 = new Date();
        System.out.println(d2);
        //
        Date d3 = new Date();
        d3.setTime(time2);
        System.out.println(d3);
​
        /** 一、日期对象创建获取毫秒值:
         * 1、Date date = new Date();
         * 2、Long time = date.getTime();
         * 二、时间毫秒值恢复成日期对象:
         * 1、Date d = new Date(time);
         * 2、d.setTime(time);
         */
    }
}

②SimpleDateFormat类

1.作用:

        ①可以对Date对象或时间毫秒值格式化成我们喜欢的时间形式。

        ②也可以把字符串的时间形式解析成日期对象。

 

2.代码演示:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
​
/**
 * SimpleDateFormat
 * 可以对Date对象或时间毫秒值格式化成我们喜欢的时间形式
 * SimpleDateFormat的构造器 :
 * 1、public SimpleDateFormat() 构造一个SimpleDateFormat,使用默认格式
 * 2、public SimpleDateFormat(String pattern) 构造一个SimpleDateFormat,使用指定格式
 * SimpleDateFormat的格式化方法:
 * 1、public final String Format(Date date) 将时间格式化成日期/时间字符串
 * 2、public final String Format(Object time) 将时间毫秒值格式化成日期/时间字符串
 */
public class SimpleDateFormat_Test {
    public static void main(String[] args) throws ParseException {
        //1、日期对象
        Date d = new Date();
        long time = d.getTime();
        //2、格式化这个日期对象(指定格式)
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm :ss EEE a");
        //3、开始格式化日期对象成为喜欢的字符串格式
        String rs =sdf.format(d);
        System.out.println(rs);
        System.out.println("-----------------");
        //4.格式化时间毫秒值
        // 问 :输出121秒后的时间
        long time1 = System.currentTimeMillis()+121*1000;
        String rs1 = sdf.format(time1);
        System.out.println(rs1);
        System.out.println("---------解析时间------------");
        /** 关键字: parse
         * public Date parse(String source)  从给定字符串的开始解析文本生成日期
         */
        //题:给定一个时间2021年08月06日 11:11:11 往后推两天14小时49分 06秒的时间
        //1.把字符串时间拿到程序中
        String datestr  = "2021年08月06日 11:11:11";
        //2.把字符串时间解析成日期对象(重点):形式必须与解析时间的形式完全一样,否则运行时解析报错
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyy年MM月dd日 HH:mm:ss");
        Date d1 = sdf1.parse(datestr);
        //3、往后推两天14小时49分 06秒的时间
        long time2 = d.getTime()+(2l*24*60*60 +14*60*60 +49*60 +6)*1000;
​
        //4、格式化这个时间毫秒值
        System.out.println(sdf.format(time2));
    }
}

3.练习题:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
​
public class Test {
    public static void main(String[] args) throws ParseException {
        //1.开始和结束时间
        String startTime = "2021-11-11 00:00:00";
        String endTime = "2021-11-11 00:10:00";
​
        //2.小贾和小皮的时间
        String xiaojia = "2021-11-11 00:03:47";
        String xiaopi = "2021-11-11 00:10:11";
​
        //3.解析小贾和小皮的时间
        SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
        Date d1 = sdf.parse(startTime);
        Date d2 = sdf.parse(endTime);
        Date d3 = sdf.parse(xiaojia);
        Date d4 = sdf.parse(xiaopi);
​
        if (d3.after(d1) && d3.before(d2)) {
            System.out.println("小贾秒杀成功,可以发货");
        }else {
            System.out.println("小贾秒杀失败");
        }
        if (d4.after(d1) && d4.before(d2)) {
            System.out.println("小皮秒杀成功,可以发货");
        }else {
            System.out.println("小皮秒杀失败");
        }
    }
}

③Calendar

1.概述:

        ①Calendar 代表了系统此刻日期对应的日历对象;

        ②Calendar 是一个抽象类,不能直接创建对象;

2.Calendar常用方法

 

3.代码演示:

import java.util.Calendar;
import java.util.Date;
​
/**Calendar  **Calendar 是可变日期对象,一旦修改后其对象本身表示的对象将产生变化
 * Calendar 代表了系统此刻日期对应的日历对象
 * Calendar 是一个抽象类,不能直接创建对象
 * 创建日历方法:
 * public static Caldar getInstance()  获取当前日历对象
 * Calendar 常用方法 :
 * 1、public int get(int field) 取日期中某个字段信息
 * 2、public void set (int field ,int value) 修改日历的某个字段信息
 * 3、public void add(int field ,int amount) 为某个字段增加/减少指定的值
 * 4、public final Date getTime() 拿到此刻日期对象
 * 5、public long getTimeInMillis() 拿到此刻时间毫秒值
 */
public class Calendar_Test {
    public static void main(String[] args) {
        //1.拿到系统日历对象
        Calendar cal = Calendar.getInstance();
        System.out.println(cal);
        //2、获取日历信息(public int get(int field))
        int year = cal.get(Calendar.YEAR);
        System.out.println(year);
        int mm = cal.get(Calendar.MONTH);
        System.out.println(mm);
        int day = cal.get(Calendar.DAY_OF_YEAR);
        System.out.println(day);
​
        System.out.println("------------");
        //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);
        System.out.println(cal);
        //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);
    }
}

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

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

相关文章

深入浅出变长结构体

1、 问题的引出 项目中用到数据包的处理,但包的大小是不固定的,其长度由包头的2字节决定。比如如下的包头:88 0f 0a ob cd ef 23 00 。长度由头2个字节880f决定,考虑字节序,转为0f88,转为10进制3976个字节的…

汽车零部件行业追溯系统的应用

汽车行业正处于一个蓬勃发展的阶段,随着客户需求的不断变化,生产厂商推出新款商品的速度也越来越快,新项目和变更的不断出现,就可能导致在交付的产品质量方面遇到各种各样的问题。如果这些质量问题得不到及时有效地追溯和控制&…

知识点滴 - PLC培训笔记

如上图所示,这个设备就是PLC的应用场景,对外控制很多接口电路,交流直流,不同大小电流、电压的电路。在工业上使用很多。 而开发PLC程序时,是在相应的集成开发环境中,画出如下的梯形图: 什么是PL…

Vue使用Element-UI生成并展示表头序号

前言 序号算是在展示数据的时候,一种很普遍的属性了,我们可以自己写生成序号的规则,也可以借助第三方。 这里我选择后者,使用Element-UI自带的一个table属性,去生成并展示需要 首先看下我的页面,是没有序…

Apache Sling App CMS <1.1.4 存在反射型XSS漏洞(CVE-2022-46769)

漏洞描述 Apache Sling 是一个基于可扩展内容树(extensible content tree)的 RESTful Web 应用框架。 1.1.4 之前版本的 Apache Sling 中的 cms.js#confirmMessage 方法未对用户可控的 title 和 message 参数进行过滤,攻击者可将精心构造的…

dubbo源码实践-总结

自己大概花了一个月的时间,断断续续的看了一遍dubbo源码,之前的文章从实践出发搭建了dubbo各层的例子!Dubbo源码的学习也暂时告一段落。这篇就谈谈自己对dubbo源码学习个人感受!1 dubbo是什么?dubbo是一个RPC框架&…

网站优化包括对什么优化(网站优化有哪些方面)

互联网时代下,各行各业都想在在互联网中占据市场,目前网站优化成为时代的潮流,很多站长,在对网站进行优化时,稍不注意就会造成网站优化过度,这也是各位最头疼的事情,网站优化能急于求成&#xf…

KubePi <1.6.4 存在会话固定漏洞(CVE-2023-22479)

漏洞描述 KubePi 是一个 K8s 面板,允许管理员导入多个 Kubernetes 集群,并且通过权限控制将不同 cluster、namespace 的权限分配给指定用户。 1.6.4 之前版本的 KubePi 在用户登录后未刷新用户 cookie,攻击者可通过诱导用户点击恶意链接等劫…

maven创建web工程,使用模板方式(二)

一,选择webapp模板 二,填写完信息后,创建后是如下的结构: 可以看到只有web目录,没有其他的java,resources,test目录等。 三,创建Java,resources,test目录 右键-> ma…

【C语言进阶】 指针强化练习

目录题目一题目二题目三题目四题目五题目六题目七题目八题目一 下面这段代码的执行结果是? int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d\n", *(a 1), *(ptr - 1));return 0; }解决这种数组与指针相结合的问题…

【Leetcode面试常见题目题解】2. 无重复字符的最长子串

题目描述 本文是LC第3题:无重复字符的最长子串。 题目描述如下 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 举例 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 输入:…

html实现酷炫的公司年会抽奖(附源码)

文章目录1.设计来源1.1 主界面1.2 抽奖效果1.2 中奖效果2.效果和源码配置2.1 动态效果2.2 员工信息配置2.3 奖品信息配置2.4 抽奖音效配置2.5 源代码源码下载作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/128640998 ht…

AI绘画日漫欧漫动态表情换脸游戏风生成红包封面流量主小程序开发

AI绘画日漫欧漫动态表情换脸游戏风生成红包封面流量主小程序开发 因全网AI绘画大量小程序被封禁下架。只有采用合规稳定运营引擎。 文生图图动日漫图生欧漫图转动图人物表情变脸换脸3D动漫集成7大AI制图模式 支持个人模式和企业支付。趣味AI制图支持流量主。 打造一款适合个人…

uniapp 画中画悬浮窗(视频) Ba-VideoPip

简介(下载地址) Ba-VideoPip 是一款画中画方式的视频悬浮窗插件。支持点播、直播;支持官方、三方播放器无缝切换;支持动态刷新(如切换视频或进度)。 支持点播、直播支持官方、三方播放器无缝切换支持动态…

【unity3D】Collider碰撞器组件

💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是unity的Collider碰撞器组件 Collider碰撞器组件▶碰撞器类别▶Box Collider▶Sphere Collider▶Box Collider 2D▶Composite Collider 2…

Aspose.Words for .NET Crack 23.1.0

Aspose.Words for .NET Crack Aspose.Words 及其产品系列是一组 Word 文档,它们处理 API 以创建、编辑、打印、阅读和稍后转换所有格式化的 Word 文档和文件格式,就在 .NET、Java、Android 中、Cloud、SSRS、SharePoint 以及最后但并非最不重要的 Jasper…

【fpdlink显示】DS90UB948关于941连接948 GPIO调试问题

1. 前言 使用一个941连接2 948显示: 941的GPIO0/1/2/3到前948的GPIO0/1/2/3和941的D_GPIO0/1/2/3到948的GPIO0/1/2/3。 设置gpio3输出,则941的D_GPIO3设置高,而948的gpio3设置不高; 但设置gpio3输入后,看到941的D_GPIO3跟随948的gpio3变化。 2. 原理图连接 3. 测试代码…

通过图像了解 Git

我受到Nico Riedmann 的 Learn git concepts, not commands 的启发,我用我自己的方式总结了 git。当然,我也通过阅读官方文档来补充它。从系统结构上理解git,让git更有趣。我最近对 git 上瘾了,以至于我正在创建自己的 git 系统。…

Java集合常见面试题(一)

集合概述 Java 集合, 也叫作容器,主要是由两大接口派生而来:一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于Collection 接口,下面又有三个主要的子接…

HarmonyOS智能座舱体验是怎样炼成的?立即查看

目录 一、智能座舱的人因设计理念 1.驾驶场景“2s内安全交互” 2.屏幕信息科学布局 3.屏幕1:2比例特色分屏 二、如何对座舱应用高效设计开发 1.基础要求 2.开发禁止 3.更佳体验 1.音频类应用快速接入 2.手机服务卡片快速适配 三、软硬件联合打造优秀体验 1.小憩模式 2.K歌体验 …