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. MYSQL免安装

    MYSQL免安装 本文使用mysql 8.0.22进行演示 一.MYSQL 下载 [x] 官网下载:地址:https://dev.mysql.com/downloads/mysql/ [x] 百度云盘 ...

  2. Codeforces 582D - Number of Binominal Coefficients(Kummer 定理+数位 dp)

    Codeforces 题目传送门 & 洛谷题目传送门 一道数论与数位 dp 结合的神题 %%% 首先在做这道题之前你需要知道一个定理:对于质数 \(p\) 及 \(n,k\),最大的满足 \( ...

  3. Git常用操作(二)

    仓库拉取 git clone XXX 修改仓库链接 $ git config -l # 显示coding列表 $ git config --get remote.origin.url # 返回orig ...

  4. 自助分析工具Power BI的简介和应用

    作为一名资深的IT技术人,特别喜欢学习和尝试新技术,也勇于接受挑战,勇于创新,不仅能发现问题,更要解决实际的疑难杂症,闲暇时光也乐于分享一些技术干货.记得2017年的时候,华章出版社的编辑通过网上找到 ...

  5. C++ and OO Num. Comp. Sci. Eng. - Part 1.

    本文参考自 <C++ and Object-Oriented Numeric Computing for Scientists and Engineers>. 序言 书中主要讨论的问题是面 ...

  6. 一个好用的快速安装lnmp环境包lnmp1-6

    一个好用的快速安装lnmp环境包lnmp1-6 地址:https://lnmp.org/tag/lnmp1-6/

  7. git创建项目,代码仓库

    1.首先在服务端远程创建仓库 mkdir  project.git cd  project.git git  --bare init 2.在本地创建项目推送到远程服务端仓库 mkdir  myproj ...

  8. C/C++运行时确定字节顺序

    字节顺序(英文:Endianness),多字节数据在内存中的存储顺序: 1.对于特定数据,内存空间有起始地址.结束地址: 2.对于数据本身,存在高位字节.地位字节:例如 int data = 0x01 ...

  9. 虚拟节点轻松应对 LOL S11 百万并发流量——腾竞体育的弹性容器实践

    作者 刘如梦,腾竞体育研发工程师,擅长高并发.微服务治理.DevOps,主要负责电竞服务平台架构设计和基础设施建设. 詹雪娇,腾讯云弹性容器服务EKS产品经理,主要负责 EKS 虚拟节点.容器实例相关 ...

  10. 一次“不负责任”的 K8s 网络故障排查经验分享

    作者 | 骆冰利 来源 | Erda 公众号 ​ 某天晚上,客户碰到了这样的问题:K8s 集群一直扩容失败,所有节点都无法正常加入集群.在经过多番折腾无解后,客户将问题反馈到我们这里,希望得到技术支持 ...