日期类(java)

文章目录

  • 第一代日期类 Date
    • 常用构造方法
    • SimpleDateFormat 日期格式化类
      • 日期转字符串(String -> Date)
      • 字符串转日期 (String->Date)
  • 第二代日期类 Calendar
    • 常用字段与如何得到实例对象
    • 相关 API
  • 第三代日期类(LocalDate\TIme)
    • 日期,时间,日期时间
    • 日期时间格式化(DateTimeFormatter)
    • 时间戳
    • 计算时间(Time)对象间隔(Duration)
    • 计算日期(Date)对象间隔 (Period)
    • 日期(Date)矫正器(TemporalAdjusters)

第一代日期类 Date

常用构造方法

第一种:Date()
第二种:Date(long 毫秒)

public class Main {
    public static void main(String[] args) throws ParseException {

        //默认国外形式
        Date date = new Date();
        System.out.println(date);

        //创建了一个代表从1970年1月1日00:00:00 GMT开始后的1000毫秒的日期和时间。
        //但是输出 toString 的时候它会显示当前系统所在时区的时间。
        //因此,如果你的系统位于东八区(例如中国标准时间),那么输出将会是 "08:00:00"
        Date date1 = new Date(1000);
        System.out.println(date1);
    }
}

1000 是 一秒,1000 * 60 就是 60秒,1000 * 60 * 10 就是 10分钟



SimpleDateFormat 日期格式化类

在这里插入图片描述

在这里插入图片描述


日期转字符串(String -> Date)

用 String format(Date date) 方法转成字符串

public class Main {
    public static void main(String[] args) throws ParseException {

        Date date = new Date();

        //y:年份,M:年中月份,d:月中日期,F:星期, H:一天中的小时,m:小时中的分钟
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 星期F HH:mm");

		//转成字符串
        String date1 = sdf.format(date);
        //输出2024-06-28 星期 4 22:42
        System.out.println(date1);
    }
}

字符串转日期 (String->Date)

用 Date parse(String source) 转成 Date

public class Main {
    public static void main(String[] args) throws ParseException {

        String data = "2024-6-28 星期5 22:49";
		
		//格式和上面对不上会报 parseException 异常		
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 星期F HH:mm");
        Date date = sdf.parse(data);
        System.out.println(data);

    }
}

格式和上面对不上会报 parseException 异常




第二代日期类 Calendar

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR, MONTH, DAY_OF_MONTH, HOUR 等 日期字段 之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法



常用字段与如何得到实例对象

在这里插入图片描述
Calender 没有专门的格式化方法,需要程序员自己组合

public class Main {
    public static void main(String[] args) throws ParseException {

        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);

        //底层是这样的:public static final int YEAR = 1;
        int year = calendar.get(1);
        int year2 = calendar.get(Calendar.YEAR);
        System.out.println(year);
        System.out.println(year2);

    }
}


相关 API

在这里插入图片描述

public class Main {
    public static void main(String[] args) throws ParseException {

        Calendar calendar = Calendar.getInstance();
        //把年设置成 2004
        calendar.set(Calendar.YEAR, 2004);
        System.out.println(calendar.get(Calendar.YEAR));

        //加一年
        calendar.add(Calendar.YEAR, -1);
        System.out.println(calendar.get(Calendar.YEAR));

        //关联日期
        String strDate = "2008-05-20 15:30:30";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = sdf.parse(strDate);
        calendar.setTime(date);
        System.out.println(calendar.get(Calendar.YEAR));
        
    }
}



第三代日期类(LocalDate\TIme)

JDK 8 加入的
LocalDate (日期/年月日),LocalTime (时间/时分秒),LocalDateTime (日期时间)

老日期类,线程不安全, 新的支持线程安全,建议直接用这个就行



日期,时间,日期时间

在这里插入图片描述

public class Main {
    public static void main(String[] args) throws ParseException {
        //获取当前日期
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println(ldt);

        //获取指定日期时间
        LocalDateTime ldt2 = LocalDateTime.of(2024,6,29,10,10);
        System.out.println(ldt);

        //加减日期
        ldt2 = ldt2.plusYears(2).plusYears(-1);
        System.out.println(ldt2);

        //获取年
        int year = ldt2.getYear();
        System.out.println(year);
    }
}


日期时间格式化(DateTimeFormatter)

在这里插入图片描述
在这里插入图片描述

public class Main {
    public static void main(String[] args) throws ParseException {
        
        
        //LocalDateTime -> String
       LocalDateTime localDateTime = LocalDateTime.now();
       DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
       String s = dtf.format(localDateTime);
       System.out.println(s);

        //String -> LocalDateTime
        String date = "2024-06-29";
        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        //格式不对会抛 parse 异常
        LocalDate localDate =  LocalDate.parse(date, dtf2);
        System.out.println(localDate);

    }
}

如果是 LocalDateTime 必须要包含时间和日期



时间戳

时间戳:1970年1月1日零时零分零秒,到系统当前时间的总毫秒数

public class Main {
    public static void main(String[] args) throws ParseException {

        //获取系统当前时间(UTC:全球标准时间)
        Instant instant = Instant.now();

        //获取时间戳
        long cuo = instant.toEpochMilli();
        System.out.println(cuo);

    }
}


计算时间(Time)对象间隔(Duration)

在这里插入图片描述

public class Main {
    public static void main(String[] args) throws ParseException {
        
    
        LocalDateTime time1 = LocalDateTime.of(2024, 6,29,8,8);
        LocalDateTime time2 = LocalDateTime.of(2023, 5,27,8,8);

        //两时间对象相差对少天
        //后面 - 前面
        Duration duration = Duration.between( time2,time1);
        System.out.println(duration.toDays());

        //两时间相差多少天
        System.out.println(duration.toHours());


    }
}


计算日期(Date)对象间隔 (Period)

在这里插入图片描述

public class Main {
    public static void main(String[] args) throws ParseException {

        LocalDate localDate1= LocalDate.of(2007, 7,7);
        LocalDate localDate2 = LocalDate.of(2008, 7,7);

        Period between = Period.between(localDate1, localDate2);
        //相差年数
        System.out.println(between.getYears());

    }
}


日期(Date)矫正器(TemporalAdjusters)

public class Main {
    public static void main(String[] args) throws ParseException {

       //获取系统当前时间
        LocalDateTime now = LocalDateTime.now();
        //矫正时间
        LocalDateTime localDateTime = now.with(TemporalAdjusters.lastDayOfMonth());
        System.out.println(localDateTime);
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【详细教程】如何使用YOLOv10进行图片与视频的目标检测

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

什么是DEQ?

DEQ (Delivered Ex Quay, Duty Paid) 是指目的港码头交货 (……指定目的港)。 这种术语规定卖方在指定目的港码头将货物交给买方处置,并且不办理进口清关手续。 DEQ适用范围 DEQ术语仅适用于海运、内河运输或多式联运,并且在目的港码头卸货时使用。如…

uniapp,uni-fab组件拖动属性,替代方案

文章目录 1. 背景2. 替代方案2.1 方案一2.2 方案二参考1. 背景 最近基于uniapp开发一款设备参数调试的APP软件,其中有使用到悬浮按钮,快速开发阶段,为了能尽快上线,直接使用了uni-ui的扩展组件uni-fab,参考【1】,效果如下图: 后期,相应的界面内容增多,由于uni-fab是…

简单科普-GPT到底是什么?

1.ChatGPT ChatGPT(全名:Chat Generative Pre-trained Transformer),是OpenAI研发的一款聊天机器人程序 ,于2022年11月30日发布 。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够基于在预训练阶段所见…

通天星CMSV6车载监控平台CompanyList信息泄露漏洞

1 漏洞描述 通天星CMSV6车载视频监控平台是东莞市通天星软件科技有限公司研发的监控平台,通天星CMSV6产品覆盖车载录像机、单兵录像机、网络监控摄像机、行驶记录仪等产品的视频综合平台。通天星科技应用于公交车车载、校车车载、大巴车车载、物流车载、油品运输车载、警车车…

昇思25天学习打卡营第5天|MindSpore-ResNet50图像分类

MindSpore-ResNet50图像分类 CIFAR-10数据集 CIFAR-10数据集是一个广泛使用的图像分类数据集,它包含了60,000张32x32的RGB彩色图像,分为10个类别,每个类别有6,000张图像。这些类别包括飞机(airplane)、汽车(automobile)、鸟类(bird)、猫(cat)、鹿(deer)、狗(dog…

最新测评!不可错过的三款网络代理服务商

在如今数字化高速发展的时代,网络代理服务已经成为许多企业和个人在进行网络活动时不可或缺的工具。为了给大家提供更具参考价值的推荐,我们的测评团队经过深入研究和实际测试,精心挑选了三款表现出色的网络代理服务商——极光HTTP、全民HTTP…

软件工程 例题

用例图 1. 某个学生成绩管理系统的部分参与者和用例总结如下。 教务管理人员: 登录系统教师、学生名单管理学期教学计划管理成绩管理。课程分配,每次课程分配时都必须打印任课通知书 学生: 登录系统选课。 教师: 登录系统成绩管理,并…

昇思25天学习打卡营第3天|网络构建

学习目标:熟练掌握网络构建方法 了解mindspore.nn 实例构建简单的神经网络 网络模型中各层参数 昇思大模型平台 AI实验室 学习记录: 一、关于mindspore.nn 在MindSpore中,Cell类是构建所有网络的基类,也是网络的基本单元。cell…

如何集成CppCheck到visual studio中

1.CPPCheck安装 在Cppcheck官方网站下载最新版本1.70,官网链接:http://cppcheck.sourceforge.net/ 安装Cppcheck 2.集成步骤 打开VS,菜单栏工具->外部工具->添加,按照下图设置,记得勾选“使用输出窗口” 2.…

高效数据采集监控平台 一体化平台 数据可视化!

提高工作效率,一直是各种厂家在寻找的方法。任何一种有效且实用的方法都值得去尝试。数据采集监控平台是一种能高效处理数据的方式,其主要工作内容是从各个产生数据的仪器设备传感器中采集数据、对数据进行集中整理整合、分析、显示、绘制图表、存储、传…

ubuntu22.04速装中文输入法

附送ubuntu安装chrome wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome-stable_current_amd64.deb

如何做互联网项目需求评估?

关于互联网项目需求评估,我们可以按照以下步骤进行: 一、确定项目主题和目标受众:这篇文章首先要明确你要评估的互联网项目的主题是什么,你的目标受众是谁?你需要对项目的背景和目的有清晰的了解。 二、项目规模和内…

将TensorFlow嵌入到Jupyter Notebook中,个人学习记录

起因是学习吴恩达机器学习过程中,在神经网络tensorflow的部分,需要在Jupyter Notebook中跑相关的代码,于是在网上找了很多资料,终于跑成功了。该笔记仅为个人学习记录,如有任何问题请见谅。 import numpy as np impor…

如何3分钟上手传得神乎其神的AI绘画!一篇文章带你搞懂!

前言 今年 AI 绘画绝对是大火的概念之一,这次加入了生财 AI 绘画小航海的船,今天是体验的第1天,那么 AI 绘画是什么呢? 简单来说就是利用 AI 实现绘画,在特定的软件或者程序中,输入一定的关键词或者指令&…

【地理库 Turf.js】

非常全面的地理库 , 这里枚举一些比较常用,重点的功能, 重点功能 提供地理相关的类:包括点,线,面等类。 测量功能:点到线段的距离,点和线的关系等。 判断功能: 点是否在…

哈尔滨高校大学智能制造实验室数字孪生可视化系统平台项目的验收

哈尔滨高校大学智能制造实验室数字孪生可视化系统平台项目的验收,标志着这一技术在教育领域的应用取得了新的突破。项目旨在开发一个数字孪生可视化系统平台,用于哈尔滨高校大学智能制造实验室的设备模拟、监测与数据分析。项目的主要目标包括&#xff1…

【Sklearn-驯化】sklearn中决策树cart的用法,看这篇就够了

【Sklearn-驯化】sklearn中决策树cart的用法,看这篇就够了 本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 免费获取相关内容文档…

【深海王国】小学生都能玩的语音模块?ASRPRO打造你的第一个智能语音助手(3)

Hi~ (o^^o)♪, 各位深海王国的同志们,早上下午晚上凌晨好呀~ 辛勤工作的你今天也辛苦啦(/≧ω) 今天大都督继续为大家带来系列——小学生都能玩的语音模块,帮你一周内快速学会语音模块的使用方式,打造一个可用于智能家居、物联网领域的语音助…

算法设计与分析--随机算法作业

随机算法作业1. 顶点覆盖问题问题描述参考答案解答 2. 负载均衡算法问题描述参考答案解答 3. MAX 3-SAT题目描述参考答案解答 随机算法–徐小华 随机算法作业 1. 顶点覆盖问题 问题描述 考虑下述 顶点覆盖问题 的简单随机算法: 开始时 S ∅ While S 不是一个顶…