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. 测试平台系列(83) 前置条件支持Redis语句

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 回顾 上节我们打了个野,解决了一 ...

  2. uniapp如何在当前页面获取上个页面的变量、方法

    getCurrentPages() getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面. 注意: getCurrent ...

  3. OI省选算法汇总及学习计划(转)

    1.1 基本数据结构 数组(√) 链表(√),双向链表(√) 队列(√),单调队列(√),双端队列(√) 栈(√),单调栈(√) 1.2 中级数据结构 堆(√) 并查集与带权并查集(√) hash 表 ...

  4. 洛谷 P5046 [Ynoi2019 模拟赛] Yuno loves sqrt technology I(分块+卡常)

    洛谷题面传送门 zszz,lxl 出的 DS 都是卡常题( 首先由于此题强制在线,因此考虑分块,我们那么待查询区间 \([l,r]\) 可以很自然地被分为三个部分: 左散块 中间的整块 右散块 那么这 ...

  5. Atcoder Grand Contest 015 F - Kenus the Ancient Greek(找性质+乱搞)

    洛谷题面传送门 & Atcoder 题面传送门 一道难度 Au 的 AGC F,虽然看过题解之后感觉并不复杂,但放在现场确实挺有挑战性的. 首先第一问很简单,只要每次尽量让"辗转相除 ...

  6. Codeforces 1188D - Make Equal(dp)

    Codeforces 题目传送门 & 洛谷题目传送门 首先我们考虑枚举最后这 \(n\) 个数变成的值 \(v\),那么需要的操作次数即为 \(\sum\limits_{i=1}^n\text ...

  7. 解决Package is not available (for R version XXX)?

    目录 1. 更新R(不推荐) 2. 更改或指定镜像源 3.源码安装 安装R包时这个错误是经常见到的.我认为有几个方法可解决,记录之. 1. 更新R(不推荐) 简单粗暴的方法就是更新R,但这波及的范围太 ...

  8. 【Workflows】 WGS/WES Mapping to Variant Calls

    WGS/WES Mapping to Variant Calls - Version 1.0 htslib官网上给的一个WGS/WES的流程.关于htslib.samtools和bcftools之间的 ...

  9. Python基础之流程控制if判断

    目录 1. 语法 1.1 if语句 1.2 if...else 1.3 if...elif...else 2. if的嵌套 3. if...else语句的练习 1. 语法 1.1 if语句 最简单的i ...

  10. restful接口文档

    1.先理清业务bai流程 2.定义前后端开发的接口规范.比如json的格dao式,url的格式 3.定内义接口文容档,这里的接口文档一般就是对应后台的实体reqVo(调用后台接口<控制器> ...