首页 > 其他分享 >日期的使用(二)

日期的使用(二)

时间:2024-10-01 09:18:22浏览次数:3  
标签:System 日期 使用 println now LocalDate public out

JDK8 之后的日期,时间

LocalDate, LocalTime, LocalDateTime

它们获取对象方案
public static Xxxx now(): 获取系统当前时间对应的对象
public static Xxx of(…): 获取指定时间的对象

  • LocalDate代表 年月日星期
  • LocalTime代表 时分秒纳秒
  • LocalDateTime代表 月日星期,时分秒纳秒

代替Calendar
它们常用的一些方法(with~, minus~, plus~):

package date_use_new;

import java.time.LocalDate;

public class Test1_LocalDate {
    public static void main(String[] args) {
        //0,获取本地日期对象(不可变对象)
        LocalDate ld = LocalDate.now();//年 月 日
        System.out.println(ld);

        //1.获取日期对象中的信息
        int year = ld.getYear();// 年
        int month = ld.getMonthValue();// 月(1——12)
        int day = ld.getDayOfMonth();// 日
        int dayOfYear = ld.getDayOfYear();// 一年中的第几天
        System.out.println(year);
        System.out.println(day);
        System.out.println(dayOfYear);

        //2.直接修改某个信息:withYear,withMonth,withDayOfMonth
        LocalDate ld2 = ld.withYear(2099);
        LocalDate ld3 = ld.withMonth(12);
        System.out.println(ld2);
        System.out.println(ld3);
        System.out.println(ld);

        //3.把某个信息加多少:plusYears,plusMonths,plusDays,plusWeeks
        LocalDate ld4 = ld.plusYears(2);
        LocalDate ld5 = ld.plusMonths(2);

        //4.把某个信息减多少:minusYears,minusMonths,minusDays,minusWeeks
        LocalDate ld6 = ld.minusYears(2);
        LocalDate ld7 = ld.minusMonths(2);
        System.out.println(ld7);

        //5.获取指定日期的LocalDate对象:
        LocalDate ld8 = LocalDate.of(2099, 12, 12);
        LocalDate ld9 = LocalDate.of(2099, 12, 12);

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

        //可以把LocalDateTime转换成LocalDate(年,月,日,星期)和LocalTime(时分秒纳秒)
        // public LocalDate toLocalDate()
        // public LocalDate toLocalDate()
        // public static LocalDateTime of(LocalDate date,LocalTime date)
        // -------三者之间方法类似,with~,plus~,minus~-----------
        /*
        LocalDate ld = ldt.toLocalDate();
        LocalDate lt = ldt.toLocalTime();
        LocalDateTime ldt10 = LocalDateTime.of(ld,lt)
       * */

    }
}

ZoneId, ZoneDateTime

ZoneDateTime 带时区时间的常见方法

方法名说明
public ZoneDateTime withXxx(时间)修改时间系列的方法
public ZoneDateTime minusXxx(时间)减少时间系列的方法
public ZoneDateTime plusXxx(时间)增加时间系列的方法

代替Calendar
它们常用的一些方法:

package date_use_new;

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

public class Test4_ZoneId_ZonedDateTime {
    public static void main(String[] args) {
        // 目标:了解时区和带时区的时间
        // 1.ZoneId的常见方法
        // public static ZoneId systemDefault(): 获取系统默认的时区
        ZoneId zoneId = ZoneId.systemDefault();
        System.out.println(zoneId.getId());
        System.out.println(zoneId);

        //public static Set<String> getAvailableZoneIds(): 获取Java支持的全部时区Id
        System.out.println(ZoneId.getAvailableZoneIds());

        // public static ZoneId of(String zoneId) : 把某个时区id封装成ZoneId对象
        ZoneId zoneId1 = ZoneId.of("America/New_York");

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

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

        // public static ZoneDateTime now() : 获取系统默认时区的ZoneDateTime对象
        ZonedDateTime now2 = ZonedDateTime.now();
        System.out.println(now2);

    }

}

Instant

通过获取Instant的对象,可以拿到此刻时间。
改时间由两部分组成:从1970-01-01 00:00:00开始走到此刻的总秒数 + 不够1秒的纳秒数。
代替Date
它的常用方法:

package date_use_new;

import java.time.Instant;

public class Test5_Instant {
    public static void main(String[] args) {
        //代替 Date()
        // 通过获取Instant的对象,可以拿到此刻时间。
        // 改时间由两部分组成:从1970-01-01 00:00:00开始走到此刻的总秒数 + 不够1秒的纳秒数
        // 1.创建Instant对象,获取此刻时间信息
        Instant now = Instant.now(); // 不可变对


        // 2.获取总秒数
        long second = now.getEpochSecond();
        System.out.println(second);

         // 3.不够一秒的纳秒数
        int nano = now.getNano();
        System.out.println(nano);

        System.out.println(now);

        Instant instant = now.plusNanos(111);

        // Instant 对象的作用,做代码性能分析,或者记录用户操作的时间点
        Instant now1 = Instant.now();
        // 代码执行。。。。
        Instant now2 = Instant.now();
        System.out.println(now2);


    }
}

DateTimeFormatter

格式化器,用于时间的格式化、解析,是线程安全的。
代替SimpleDateFormat线程不安全

它常用的方法:

package date_use_new;

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

public class Test6_DateTimeFormatter {
    public static void main(String[] args) {
        //1.创建一个日期时间格式化器对象出来
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");

        // 2. 对时间进行格式化
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);

        String rs = formatter.format(now);// 正向格式化
        System.out.println(rs);

        // 3. 格式化时间,另一种方法
        String rs2 = now.format(formatter);// 反向格式化
        System.out.println(rs2);


        // 4.解析时间:一般使用LocalDateTime提供的解析方法来解析
        String dataStr = "2029年12月12日 12:12:12";
        LocalDateTime ldt = LocalDateTime.parse(dataStr, formatter);
        System.out.println(ldt);
    }
}

Period, Duration

Period: 用于计算两个LocalDate对象 相差的年数、月数、天数。
Duration: 用于计算两个时间对象相差的天数,小时数,分数,秒数,纳秒数;支持LocalTime, LocalDateTime, Instant 等时间。

其他时间补充。
它们常用方法:

package date_use_new;

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

public class Test7_Period {
    public static void main(String[] args) {
        // 用于计算两个LocalDate对象 相册的年数、月数、天数
        LocalDate start = LocalDate.of(2029, 8, 10);
        LocalDate end = LocalDate.of(2029, 12, 15);

        // 1.创建Period 对象,封装两个日期对象
        Period period = Period.between(start, end);

        // 2. 通过period对象获取两个日期对象相差的信息
        System.out.println(period.getYears());
        System.out.println(period.getMonths());
        System.out.println(period.getDays());
    }
}

package date_use_new;

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

public class Test8_Duration {
    public static void main(String[] args) {

/*
* 用于计算两个时间对象相差的天数,小时数,分数,秒数,纳秒数;
* 支持LocalTime, LocalDateTime, Instant 等时间
* */
        LocalDateTime start = LocalDateTime.of(2025, 11, 11, 11, 10, 10);
        LocalDateTime end = LocalDateTime.of(2025, 11, 11, 11, 11, 11);

        // 1.得到Duration 对象
        Duration duration = Duration.between(start, end);

        // 2. 获取两个时间对象间隔的信息
        System.out.println(duration.toDays());
        System.out.println(duration.toHours());
        System.out.println(duration.toMinutes());// 间隔多少分
        System.out.println(duration.toSeconds());
        System.out.println(duration.toMillis());// 间隔多少毫秒
        System.out.println(duration.toNanos());// 间隔多少纳秒

    }
}

标签:System,日期,使用,println,now,LocalDate,public,out
From: https://blog.csdn.net/qq_45173172/article/details/142635040

相关文章

  • linux内核双向链表使用list klist
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、list和klist是什么?二、代码示例1.list2.klist总结前言提示:这里可以添加本文要记录的大概内容:linux内核中大量使用了链表数据结构来存储各种数据,比如device和driver使用klist存储,下......
  • Spring MVC 中的日期时间格式校验与异常处理
    个人名片......
  • [Uninstall] 软件彻底卸载工具的下载及详细安装使用过程(附有下载文件)
    一般软件安装的有问题,或者想重新安装其他版本就需要将原来的版本删除干净,但常常删不干净,本文分享一个软件彻底卸载工具,完成彻底卸载软件的工作下载链接在文末下载压缩包后解压!!安装路径不要有中文解压后得到UninstallToolv3.6.1文件双击exe文件假设这里要删除Git,则点......
  • [Notepad++] 文本编辑器的下载及详细安装使用过程(附有下载文件)
    程序员常用的文本编辑器Notepad++,用于修改配置文件等下载链接在文末下载压缩包后解压!!安装路径不要有中文解压文件,得到双击exe文件选择简体中文,点击OK点击下一步点击“我接受”更改安装目录,不建议使用C盘,点击下一步点击下一步勾选第一个选项,创建桌面文件,点......
  • 一文教你如何使用双拼输入,一种更省力更快捷的输入方法
    文章目录引言为电脑安装双拼输入法如何练习第一步,背口诀第二步,网站练习第三步,正式使用引言我之前一直使用的是全拼的打字方法,在我长时间从事文字工作后,我发现全拼对于中文而言是个十分效率低下的打字方法,一段文字可能得敲击几十次键盘,写篇万字的文章,有时候敲到最后......
  • Selenium+WebDriver 各浏览器驱动下载与使用
    Selenium+Python之WebDriver驱动下载与使用一、Firefox(火狐)浏览器驱动下载地址:https://github.com/mozilla/geckodriver/releases/下载对应驱动:根据自己的操作系统下载相对应的驱动。使用方法:把文件存放在python根目录下,例如:C:\xxx\Python\Python38下。(安装最新版......
  • 使用Ubuntu时遇到的各种问题(二)
    1.底盘里程计的计算:1.[基于STM32底盘控制与ROS上层导航小车制作]第六节ROS计算和发布里程计与tf变换_ros小车里程计计算-CSDN博客2.SLAM从入门到精通(底盘里程计的计算)_小车里程计csdn-CSDN博客           要了解差速轮,那么我们先预设一些变量。差速轮的间......
  • spring全家桶使用教程
    成长路上不孤单......
  • Chromium 屏蔽缺少 Google API 密钥,因此 Chromium 的部分功能将无法使用。c++
    新编译的Chromium工程默认gn参数如下:可以利用gnargs--listout/debug>1.txt导出默认参数google_api_key  Currentvalue(fromthedefault)=""   From//google_apis/BUILD.gn:43  SetthesetobakethespecifiedAPIkeysandOAuthclient ......
  • GEE问题: 离校后学校edu账户无法使用,如何导出我们所有的脚本
    目录问题简介什么是Git从EarthEngine克隆存储库注意事项结语问题我即将离开大学,用于GoogleEarthEngine的学校电子邮件帐户将被终止。我该如何转移我的脚本和资产或保留对我所有作品的访问权限?简介地球引擎脚本存储在由Google托管的Git资源库中。您可......