LocalDate类

LocalDate类代表不带时区的日期,列入2020-12-20。该类提供了静态的now()方法来获取当前的日期。这个类是线程安全的。

LocalTime类

代表不带时区的时间,例如10:20:30。该类提供了静态的now()方法来获取来获取当前的时间。这个类是线程安全的。

LocalDateTime类

LocalDateTime类代表不带时区的日期,时间,列入2020-12-20T10:15:15。该类提供了静态的now方法来获取对应的时间日期。这个类是线程安全的。

代码示例:

package com.zmd.common_class_libraries;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime; /**
* @ClassName LocalDateTime
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/7.
*/
public class LocalDateTimeExample {
public static void main(String[] args) {
//当前日期
LocalDate localDate = LocalDate.now();
System.out.println(localDate); //2021-04-07
//指定日期:某年的第多少天
LocalDate localDate1 = LocalDate.ofYearDay(2021,365);
System.out.println(localDate1);//2021-12-31
//获取指定年月日时间
LocalDate localDate2 = LocalDate.of(2021,5,1);
System.out.println(localDate2); //2021-05-01 //当前时间
LocalTime localTime = LocalTime.now();
System.out.println(localTime);
//指定时间
localTime = LocalTime.of(22,0,0,0);
System.out.println(localTime);
//一天中的第多少秒
localTime = LocalTime.ofSecondOfDay(86399);
System.out.println(localTime); //23:59:59 //日期时间LocalDateTime类:
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime); //2021-04-07T22:22:16.560556800
//时间加减,不改变对象自身,需要获取返回值
LocalDateTime localDateTime1 = localDateTime.plusHours(5).plusMinutes(3);
System.out.println(localDateTime1); //2021-04-08T03:25:16.560556800
}
}

Calendar 类

实例创建方法Calendar.getInstance();

实例方法

getTime() 获取时间戳;

add()时间计算;

roll()时间计算超出范围走默认值;

getActualMaximum; getActualMinimum获取最大最小值

package com.zmd.common_class_libraries;

import com.sun.jdi.PathSearchingVirtualMachine;

import java.util.Calendar;

/**
* @ClassName CalendarExample
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/7.
*/
public class CalendarExample {
public static void main(String[] args) {
//Calendar 类为抽象类,不可以new 需要使用静态方法getInstance返回实例
Calendar calendar = Calendar.getInstance();
//获取当前日期
System.out.println(calendar.getTime());
//日期计算,改变对象本身
calendar.add(Calendar.DATE, -1);
System.out.println(calendar.getTime());
//获取时间对应的年、月、本月第几天、是当天第几个小时
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH));
System.out.println(calendar.get(Calendar.DATE));
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
//获取指定字段的最大值最小值:月份0~11
System.out.println(calendar.getActualMaximum(Calendar.MONTH));
System.out.println(calendar.getActualMinimum(Calendar.MONTH)); //日期计算roll和add一样,但是超出当天或者当年月时间不会向上进位
calendar.add(Calendar.DAY_OF_MONTH,26);
System.out.println(calendar.getTime()); }
}

set

设置对应年月字段

        // set设置月份默认超出对应合理范围会自动进位
calendar.set(Calendar.MONTH,20); //设置20月,会自动进位到次年
System.out.println(calendar.getTime()); //Tue Sep 06 18:19:24 CST 2022

关闭容错

        //配置不允许自动容错
calendar.setLenient(false);
calendar.set(Calendar.MONTH,20); //关闭进位,再设置20月,抛出异常 //Exception in thread "main" java.lang.IllegalArgumentException: MONTH
System.out.println(calendar.getTime());

Calendar set方法的延迟修改策略

当执行set()方法设置时间对象更改某个字段后,并没有马上对原有实例修改,而是在下一次调用get、getTime、或者getTimeMillis方法的时候才做update更新修改后的时间。

set(int field, int value)的方法是将指定的字段修改为value,它的实现原理,其实是将Calendar类的isSet变量对应的字段设置为了true,来存储某个字段是否被设置过。在用一个isTimeSet字段来存放我们的时间应不应该要修改?

然后,我们再调用,get, getTime或者getTimeInMillis方法的时候,判断如果isTimeSet为false,会重新计算时间。

这样做的好处是什么?比如,我们set了100次,之后,我们突然get了一次,这个时候,我们就仅仅在get的时候才计算了一下时间(1次)。如果不这样做,每次set的时候,就应该计算时间(100次),这样就节约了我们的资源

 

---------------------------------------------------------------

Date类 已过时

构造时间对象

当前时间Date()

指定时间Date(毫秒时间戳)

方法:

getTime() 时间对象的时间戳,默认传入的是System.currentTimeMillis()

setTime(long time) 设置时间对象的时间戳

before/after 判断传入的时间是否在本时间实例的前或后。

package com.zmd.common_class_libraries;

import java.util.Date;

/**
* @ClassName DateTimeExample
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/4/7.
*/
public class DateTimeExample {
public static void main(String[] args) {
//当前时间戳毫秒数
System.out.println(System.currentTimeMillis());
//Date()获取当前时间
Date nowDate = new Date();
System.out.println(nowDate); //判断时间对象是否在指定时间之后
Date when = new Date(System.currentTimeMillis() - 7200 * 1000);
System.out.println(when);
System.out.println(nowDate.after(when));;
//判断时间对象是否在指定时间之前
System.out.println(nowDate.before(when));;
//通过时间对象获取时间对象的时间戳
System.out.println(nowDate.getTime());
//对比测试
System.out.println(System.currentTimeMillis()); //设置时间戳,比如设置24小时之后的
nowDate.setTime(System.currentTimeMillis() + 24 * 3600 * 1000);
System.out.println(nowDate);
}
}

java 常用类库:时间类LocalDate;LocalTime;LocalDateTime;Calendar 类;Date ;的更多相关文章

  1. Java时间处理类LocalDate和LocalDateTime常用方法

    Java时间处理类LocalDate和LocalDateTime常用方法 https://blog.csdn.net/weixin_42579074/article/details/93721757

  2. JAVA(三)JAVA常用类库/JAVA IO

    成鹏致远 | lcw.cnblog.com |2014-02-01 JAVA常用类库 1.StringBuffer StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不 ...

  3. Java 常用类库与技巧【笔记】

    Java 常用类库与技巧[笔记] Java异常体系 Java异常相关知识 Java在其创立的时候就设置了比较有效的处理机制,其异常处理机制主要回答了三个问题:what,where,why what表示 ...

  4. Google的Java常用类库 Guava资料

    java的人应该都知道Apache commons的java常用类库吧,这个Guava和commons一样,封装出一套比jdk本身提供的常用类库强大.既然有了这个这么强大的类库,我们就没必要重复造轮子 ...

  5. java8时间工具类Localdate、LocaldateTime

    优点: 1.方便. Date 只能是日期加时间的格式,而 LocalDate .LocalTime.LocalDateTime 分别代表日期,时间,日期+时间,非常灵活.再就是后者在日期计算及格式化方 ...

  6. Java常用类库(一) : Object 和日期类的简单使用

    顶哥说:Java是世界的,但项目不是! Java有非常多的类库,而我们不会也不用都去学习,毕竟你也仅仅掌握了你手机20%的功能却足够你使用,不是吗? 今天介绍以下类: l  Object l  Dat ...

  7. Java常用API——时间类

    前言:Java.util.*工具包中,包含了集合框架,旧集合类,事件模型,日期和时间设施,国际化和其他使用程序类 (字符串.随机数生成器和位数组) 一.日期类Date 1.概述 Date是一个薄包装类 ...

  8. java 常用类库:操作系统System类,运行时环境Runtime

    System类: System 类代表Java程序的运行平台,程序不能创建System类的对象, System类提供了一些类变量和类方法,允许直接通过 System 类来调用这些类变量和类方法. Sy ...

  9. JAVA常用类库简介(转)

    Java编程语言中为方便学习者学习,编制了许多类,这些类已经经过测试,都是我们编程的基础.如果不利用这些已存在的类,我们的编程工作将变得异常复杂并且效率低下.所以我们应尽可能多的掌握Java基本类库的 ...

随机推荐

  1. SpringMVC学习笔记---依赖配置和简单案例实现

    初识SpringMVC 实现步骤: 新建一个web项目 导入相关jar包 编写web.xml,注册DispatcherServlet 编写springmvc配置文件 接下来就是去创建对应的控制类 , ...

  2. 论文翻译:2021_Decoupling magnitude and phase optimization with a two-stage deep network

    论文地址:两阶段深度网络的解耦幅度和相位优化 论文代码: 引用格式:Li A, Liu W, Luo X, et al. ICASSP 2021 deep noise suppression chal ...

  3. alpine切换源 安装慢 apk add很慢

    alpine切换源 安装慢 apk add很慢 阿里镜像 sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/reposit ...

  4. R语言与医学统计图形-【33】生存曲线、森林图、曼哈顿图

    1.生存曲线 基础包survival+扩展包survminer. survival包内置肺癌数据集lung. library(survival) library(survminer) str(lung ...

  5. Excel-vlookup(查找值,区域范围,列序号,0)如何固定住列序列号,这样即使区域范围变动也不受影响

    突然,发现VLOOKUP的列序列号并不会随着区域范围的改变而自动调节改变,只是傻瓜的一个数,导致V错值.所有,就想实现随表格自动变化的列序号. 方法一:在列序号那里,用函数得出永远想要的那个列在区域范 ...

  6. EXCEL如何用公式提取一列中的唯一值和不重复值

    说明:思路用的很新奇,也对COUNTIF有了更深一步的了解,但是,对于百行数据运算速度特别低,不适合数据多的使用 当面对一堆数据,我们要提取一列的唯一值的时候,如果单纯用人为一个个判断,显然是不科学的 ...

  7. 关于Stream的使用

    引言 Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找.过滤和映射数据等操作.使用Stream API 对集合数据进行操作,就类似于使用 ...

  8. Java日期时间操作基础——包含JDK1.8时间操作新特性

    JDK1.7日期时间操作 示例小结 public class DateTest { public static final String FORMAT_DATE = "yyyy-MM-dd& ...

  9. javaSE高级篇1 — 异常与多线程基础

    1.异常的体系结构  注:Throwable是一个类,不是一个接口,这个类里面是描述的一些Error和Exception的共性,如图所示: 异常 / 错误是什么意思? 定义:指的是程序运行过程中,可能 ...

  10. 利用python代码获取文件特定的内容,并保存为文档

    说明:有段时间需要读取上百个文件的单点能(sp),就写了下面的代码(计算化学狗努力转行中^-^) import os.path import re # 1 遍历指定目录,显示目录下的所有文件名 def ...