Java练习-----时间工具类(JDK8之后)

news2024/12/23 19:59:19

目录

LocalDate/LocalTime/LocalDateTime类

ZoneDateTime和ZoneId

Instant类

DateTimeFormatter类 :解析格式化时间


LocalDate/LocalTime/LocalDateTime类

package crrc.studytest1;

import java.time.Duration;
import java.time.LocalDateTime;

public class DurationClass {
    public static void main(String[] args) {
        //获取两个时间对象用来比较
        LocalDateTime start = LocalDateTime.of(1998,5,28,5,25,30);
        LocalDateTime end = LocalDateTime.of(2024,9,19,15,01,15);

        //创建一个Duration类来比较两个时间
        Duration duration = Duration.between(start,end);
        long days = duration.toDays();
        long hours = duration.toHours();
        long minutes = duration.toMinutes();
        long seconds = duration.getSeconds();
        long millis = duration.toMillis();
        long nanos = duration.toNanos();
        System.out.println(days);
        System.out.println(hours);
        System.out.println(minutes);
        System.out.println(seconds);
        System.out.println(millis);
        System.out.println(nanos);

    }
}

package crrc.studytest1;

import java.time.LocalDate;
import java.time.LocalTime;

public class LocalTimeClass {
    public static void main(String[] args) {
        //1.获取本地时间对象
        LocalTime ld = LocalTime.now();//时 分 秒 纳秒
        System.out.println(ld);

        //2.获取日期中的信息
        int hour = ld.getHour();//时
        int minute = ld.getMinute();//分
        int second = ld.getSecond();//秒
        int nano = ld.getNano();//纳秒
        System.out.println(hour);
        System.out.println(minute);
        System.out.println(second);
        System.out.println(nano);

        /*3.直接修改某个信息:withYear;withMonth.....都是以with开头,
        然后会返回一个新的对象,不会改变原有时间对象*/
        LocalTime ld2 = ld.withHour(15);
        System.out.println(ld2);
        LocalTime ld3 = ld2.withMinute(15);
        System.out.println(ld3);
        LocalTime ld33 = ld2.withSecond(0);
        System.out.println(ld33);

        //4.把某个信息加多少:plusYears;plusMonths;plusWeeks;
        LocalTime ld4 = ld.plusHours(10);
        System.out.println(ld4);
        LocalTime ld5 = ld.plusMinutes(10);
        System.out.println(ld5);

        //5.把某个信息减多少:minusYears;minusMonths;minusWeeks;minusDays;
        LocalTime ld6 = ld.minusHours(10);
        System.out.println(ld6);
        LocalTime ld7 = ld.minusSeconds(10);
        System.out.println(ld7);

        //6.获取指定日期的LocalDate对象:public static LocalDate of(int year,int month,int day)
        LocalTime ld8 = LocalTime.of(10,5,28);
        LocalTime ld9 = LocalTime.of(13,5,18);
        LocalTime ld10 = LocalTime.of(13,5,18);
        System.out.println(ld8);
        System.out.println(ld9);
        System.out.println(ld10);

        //7.判断两个日期对象,是否相等,在前还是在后: equals;isBefore;isAfter;
        System.out.println(ld9.equals(ld10));
        System.out.println(ld9.equals(ld8));
        System.out.println(ld8.isAfter(ld9));
        System.out.println(ld8.isBefore(ld9));
    }
}

package crrc.studytest1;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class LocalDateTimeClass {
    public static void main(String[] args) {
        //用法基本和前面两个类一样 只不过把他们结合起来了 在这儿不演示了
        //简单用一下他们三者之间的转换
        LocalTime lt = LocalTime.now();
        LocalDate ld = LocalDate.now();
        LocalDateTime ldt = LocalDateTime.of(ld,lt);
        LocalDateTime ldt1 = LocalDateTime.now();
        LocalTime lt1 = ldt1.toLocalTime();
        LocalDate ld1 = ldt1.toLocalDate();
        System.out.println(lt);
        System.out.println(ld);
        System.out.println(ldt);
        System.out.println(ldt1);
        System.out.println(lt1);
        System.out.println(ld1);
    }
}

ZoneDateTime和ZoneId

package crrc.studytest1;

import java.time.Clock;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class ZoneId_ZoneDateTime {
    public static void main(String[] args) {
        //获取当前系统的时区id并打印出来
        // public static ZoneId systemDefault():获取系统默认时区
        ZoneId zoneId = ZoneId.systemDefault();
        System.out.println(zoneId);
        System.out.println(zoneId.getId());

        //获取Java支持的所有时区ID
        System.out.println(ZoneId.getAvailableZoneIds());

        //把某个时区ID封装成 ZoneId对象
        ZoneId zoneId1 = ZoneId.of("America/New_York");

        //ZoneDateTime 带时区的时间
        //public static ZoneDateTime now(ZoneId zone):获取某个时区的ZoneDateTime对象
        ZonedDateTime nowUSA = ZonedDateTime.now(zoneId1);
        ZonedDateTime nowChina = ZonedDateTime.now(zoneId);
        System.out.println(nowUSA);
        System.out.println(nowChina);

        //世界标准时间
        ZonedDateTime now = ZonedDateTime.now(Clock.systemUTC());
        System.out.println(now);

        //默认系统时间
        ZonedDateTime now2 = ZonedDateTime.now();
        System.out.println(now2);
    }
}

Instant类

package crrc.studytest1;

import java.time.Instant;

public class InstantClass {
    public static void main(String[] args) {
        //一般用来做代码性能分析 在代码执行前和代码执行后分别获取此刻时间戳,相减就是代码运行时间
        Instant instant = Instant.now();
        System.out.println(instant);

        //获取总秒数
        long second = instant.getEpochSecond();
        //获取不够1秒的纳秒数
        long nano = instant.getNano();
        System.out.println(second);
        System.out.println(nano);

        //也有plus minus 等方法 返回一个新的Instant对象
    }
}

DateTimeFormatter类 :解析格式化时间

package crrc.studytest1;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterClass {
    public static void main(String[] args) {
        //用于时间格式化解析的
        //1.创建一个日期时间格式化对象器出来
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        //2.准备一些时间对其进行格式化
        LocalDateTime ldt = LocalDateTime.now();
        System.out.println(ldt);
        String strTime = dtf.format(ldt);//时间格式变成字符串(正向格式化)
        System.out.println(strTime);
        String strTime1 = ldt.format(dtf);//也可以用LocalDateTime类提供的format方法进行转换需要传入格式化器(反向格式化)
        System.out.println(strTime1);

        //3.解析时间 将字符串类型时间转换成相应时间对象
        String dateStr = "1998年5月28日 18:55:36";
        DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy年M月dd日 HH:mm:ss");
        LocalDateTime ldt1 = LocalDateTime.parse(dateStr,dtf1);
        System.out.println(ldt1);

    }
}

Period类

package crrc.studytest1;

import java.time.LocalDate;
import java.time.Period;

public class PeriodClass {
    public static void main(String[] args) {
        //1.先准备两个时间对象用于计算二者的时间间隔
        LocalDate ld1 = LocalDate.now();
        LocalDate ld2 = ld1.plusMonths(13);
        LocalDate ld3 = ld2.plusYears(5);
        LocalDate ld4 = ld3.plusDays(20);
        System.out.println(ld1);
        System.out.println(ld4);
        //2.创建一个Period对象
        Period p = Period.between(ld1,ld4);

        //3.获取两个日期相差的信息
        int year = p.getYears();
        int month = p.getMonths();
        int day = p.getDays();
        System.out.println(year);
        System.out.println(month);
        System.out.println(day);

    }
}

Duration类

package crrc.studytest1;

import java.time.Duration;
import java.time.LocalDateTime;

public class DurationClass {
    public static void main(String[] args) {
        //获取两个时间对象用来比较
        LocalDateTime start = LocalDateTime.of(1998,5,28,5,25,30);
        LocalDateTime end = LocalDateTime.of(2024,9,19,15,01,15);

        //创建一个Duration类来比较两个时间
        Duration duration = Duration.between(start,end);
        long days = duration.toDays();
        long hours = duration.toHours();
        long minutes = duration.toMinutes();
        long seconds = duration.getSeconds();
        long millis = duration.toMillis();
        long nanos = duration.toNanos();
        System.out.println(days);
        System.out.println(hours);
        System.out.println(minutes);
        System.out.println(seconds);
        System.out.println(millis);
        System.out.println(nanos);

    }
}

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

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

相关文章

虚拟机屏幕分辨率自适应VMWare窗口大小

文章目录 环境问题解决办法其它虚拟机和主机间复制粘贴 参考 环境 Windows 11 家庭中文版VMWare Workstation 17 ProUbuntu 24.04.1 问题 虚拟机的屏幕大小,是固定的。如下图,设置的分辨率是800*600,效果如下: 可见&#xff0c…

统信服务器操作系统ade版【iostat】命令详解

统信服务器操作系统全版本iostat 安装、命令格式和命令参数 文章目录 功能概述功能介绍1.iostat安装2.iostat命令格式3.iostat命令参数 功能概述 iostat主要用与报告CPU统计信息和设备分区的io统计信息,iostat首次运行时显示自系统启动开始的各项统计信息&#xff…

1.5 计算机网络的分层结构

欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅! 文章目录 前言1 分层设计2 网络体系结构2.1 基本概述2.2 常见的三种网络体系结构 3 各层之间的关系3.1 水平关系3.2 垂直关系 4 数据传输过程4.1 水平视角4.2 垂直视角 前言 在当今数字…

Ubuntu22.04安装GNSS数据处理软件GAMIT/GLOBK

由于微信公众号改变了推送规则,为了每次新的推送可以在第一时间出现在您的订阅列表中,记得将本公众号设为星标或置顶喔~ 手把手带您安装gamit/globk软件~ 🌿前言 受朋友之托,出一期Ubuntu22.04安装GNSS数据处理软件——gamit软件…

Web端云剪辑解决方案,智能字幕,精准识别语音字幕,一键上轨编辑

无论是企业宣传、个人Vlog、在线教育还是直播带货,高质量的视频内容都是吸引眼球、传递价值的关键。然而,面对繁琐的剪辑流程、高昂的时间成本以及技术门槛,许多创作者往往望而却步。正是洞察到这一市场需求,美摄科技携其创新的We…

解锁MySQL升级秘诀:提升性能、增强安全的必备指南

随着mysql不断演进,旧的版本不断地会发现新的漏洞,为修复漏洞体验新版本的功能,就需要对数据库进行升级操作。 升级注意点 备份!备份!备份! 1.从5.6升级到5.7需首先升级到5.6最新版;不支持跨…

消息中间件常见面试题(RabbitMQ)

MQ场景: 异步发送(验证码、短信、邮件)MySQL、Redis、ES之间的数据同步分布式事务等 一、RabbitMQ 1.1 消息不丢失 提问:如果保证消息不丢失呢? 流程:生产者将消息发送给交换机,交换机发送给…

css实现类似歌词字体渐变的效果

1、HTML <view class"title">哈哈哈哈哈</view> 2、CSS animation: hue 6s infinite linear;background-image: linear-gradient(135deg, #fc00c7 0%, #1c4efd 54%, #00aded 100%);-webkit-text-fill-color: transparent;color: transparent;-webkit-ba…

【**倒计时,人工智能的ASI时代几年内将至-samaltman深夜发文预言**】

在未来的几十年里&#xff0c;我们将能够做到我们的祖辈认为像魔术一样的事情。 这是Sama Ltman博文的第一句话。技术进步加速&#xff1a;随着时间的推移&#xff0c;人类的能力显著提高&#xff0c;我们能够完成前人认为不可能的事情。他认为&#xff1a; 我们的能力增强不…

Spring 核心

Spring 核心 这篇文章&#xff0c;我们换个思路来学习&#xff0c;来践行一下以始为终&#xff0c;以面试题为引来重温一下Spring&#xff0c;毕竟孔子曾说&#xff0c;“温故而知新&#xff0c;可以为师矣。” &#xff0c;可以通过这个链接看看有哪些常见的面试题 Spring 面…

【深度学习】03-神经网络2-1损失函数

在神经网络中&#xff0c;不同任务类型&#xff08;如多分类、二分类、回归&#xff09;需要使用不同的损失函数来衡量模型预测和真实值之间的差异。选择合适的损失函数对于模型的性能至关重要。 这里的是API 的注意⚠️&#xff0c;但是在真实的公式中&#xff0c;目标值一定是…

第二证券:a股创业板科创板是什么意思?各自代码是什么?

a股创业板科创板是什么意思&#xff1f; a股是指人民币一般股票的总称&#xff0c;其发行公司是在我国境内注册的&#xff0c;a股在境内发行并以人民币计价&#xff0c;a股的投资者首要是境内安排、安排或个人&#xff0c;也包括合格的境外安排投资者。 创业板是股票商场的一…

睡眠监测系统基于边缘计算和微服务缓存

这篇论文的主要内容是关于基于边缘计算和微服务缓存的睡眠监测系统。以下是详细内容概述&#xff1a; 标题 睡眠监测系统基于边缘计算和微服务缓存 作者 Nico Surantha - 东京市立大学&#xff0c;日本David Jayaatmaja - 雅加达Bina Nusantara大学&#xff0c;印度尼西亚S…

项目管理软件应具备哪些功能?分享一款功能齐全的项目管理工具

项目管理软件是一类专门设计用于规划、执行和监控项目的工具。它提供了一种集中管理和协调项目活动的方式&#xff0c;有助于提升项目的效率和成功率。本文将介绍项目管理软件的九大基本功能是什么&#xff0c;以及分享一款功能齐全的项目管理软件供大家参考。 一、项目计划与…

CANopen开源库canfestival的移植

本文记录将CANopen开源库CANfestival移植到GD32F470单片机的过程。CANopen协议理解请参考博客&#xff1a;CANopen协议的理解-CSDN博客 CANfestival开源库下载链接 CSDN链接&#xff1a; https://download.csdn.net/download/heqiunong/89774627 官网链接&#xff1a;https:/…

2024年主动降噪头戴式耳机该如何选择?四款品牌高性价比推荐

今天与大家聊一聊头戴式降噪蓝牙耳机。无论是沉浸在游戏的世界中&#xff0c;还是专注于观看视频课程汲取知识&#xff0c;它都能为我带来清晰、震撼的音质体验。对程序员来说&#xff0c;在嘈杂的工作环境中&#xff08;比如机房里&#xff09;&#xff0c;头戴式耳机都能让我…

Linux shell编程学习笔记83:time命令——争分夺秒

0 引言 在DOS或Windows中&#xff0c;我们可以使用time命令来查看或修改系统时间。 但是在Linux中&#xff0c;time命令的功能却与DOS或Windows迥然不同。 1 time命令 的功能、帮助信息、命令格式和参数说明 1.1 time命令 的功能 在Linux&#xff0c;time命令的功能是测量…

鸿蒙 OS 开发单词打卡 APP 项目实战 20240922 笔记和源码分享

配套有完整的录播课, 需要的私信. 零基础入门级别, 有点前端基础都能学会. 效果截图: 代码截图: 页面完整代码: import { AnswerStatus } from ../enums/AnswerStatus import { PracticeStatus } from ../enums/PracticeStatus import { getRandomQuestions, Question …

江协科技STM32学习- P17 TIM输入捕获

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

【C++篇】探寻C++ STL之美:从string类的基础到高级操作的全面解析

文章目录 C string 类详解&#xff1a;从入门到精通前言第一章&#xff1a;C 语言中的字符串 vs C string 类1.1 C 语言中的字符串1.2 C string 类的优势 第二章&#xff1a;string 类的构造与基础操作2.1 string 类的构造方法2.1.1 示例代码&#xff1a;构造字符串 2.2 string…