JDK 1.8(DateUtil)时间帮助类

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)(1) 方法描述格式化为中文日期格式,如果isUppercase为false,则返回类似:2018年10月24日,否则返回二〇一八年十月二十四日源码分析一/**格式化为中文日期格式,如果isUppercase为false,则返回类似:2018年10月24日,否则返回二〇一八年十月二十四日@param date 被格式化的日期@param isUppercase 是否采用大写形式@param withTime 是否包含时间部分@return 中文日期字符串*/ 阅读详情

看阿里java 开发规范中是这样描述的

在这里插入图片描述
记录JDK 1.8 时间处理的工具类。代码如下
开发工具IDEA
记得安装(lombok 插件)

package me.zf.simpleboot.common.utils;

import lombok.Value;
import lombok.experimental.UtilityClass;
import lombok.extern.slf4j.Slf4j;
import me.zf.simpleboot.common.enums.DateUnit;
import org.apache.commons.lang3.StringUtils;

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;
import java.util.Optional;

/**
 * 使用JDK 1.8写的帮助类
 *
 * @author 疯信子
 * @version 1.0
 * @date 2019/9/18.
 */
@UtilityClass //声明成一个工具类,加入static并且throw新异常
@Value
@Slf4j
public class DateUtil {

    public String PATTERN_DATETIME = "yyyy-MM-dd HH:mm:ss";
    public String PATTERN_DATE = "yyyy-MM-dd";
    public String PATTERN_TIME = "HH:mm:ss";

    public String DATE_PATTERN = "yyyyMMdd";


    /**
     * jdk1.8线程安全的时间处理类 返回还是jdk 1.8之前的类
     *
     * @param dateStr
     * @return
     */
    public  Date parseSync8(String dateStr, String pattern) {
        if (StringUtils.isBlank(pattern)) {
            pattern = DATE_PATTERN;
        }
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);

        LocalDate date = LocalDate.parse(dateStr, formatter);
        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zdf = date.atStartOfDay(zoneId);

        return Date.from(zdf.toInstant());
    }


    public  String formatSync8(Date date, String pattern) {
        if (StringUtils.isBlank(pattern)) {
            pattern = DATE_PATTERN;
        }
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
        ZoneId zoneId = ZoneId.systemDefault();
        Instant instant = date.toInstant();
        LocalDateTime now = instant.atZone(zoneId).toLocalDateTime();

        return now.format(formatter);
    }


    /**
     * 格式化时间
     *
     * @param dateStr
     * @param pattern
     * @return 默认返回时间格式(yyyy-MM-dd) LocalDate
     */
    public  LocalDate parseLocalDate(String dateStr, String pattern) {
        if (StringUtils.isBlank(dateStr)) {
            return null;
        }

        if (StringUtils.isBlank(pattern)) {
            pattern = PATTERN_DATE;
        }

        LocalDate localDate = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern(pattern));

        return localDate;
    }

    /**
     * 格式化时间
     *
     * @param dateStr
     * @param pattern
     * @return 默认返回时间格式(yyyy-MM-dd HH:mm:ss) LocalDateTime
     */
    public  LocalDateTime parseLocalDateTime(String dateStr, String pattern) {
        if (StringUtils.isBlank(dateStr)) {
            return null;
        }

        if (StringUtils.isBlank(pattern)) {
            pattern = PATTERN_DATETIME;
        }

        LocalDateTime localDate = LocalDateTime.parse(dateStr, DateTimeFormatter.ofPattern(pattern));

        return localDate;
    }


    /**
     * localDate转换为Date时间
     *
     * @param localDate
     * @return
     */
    public  Date localDateConvert(LocalDate localDate) {

        LocalDate currentDate = Optional.ofNullable(localDate).orElse(LocalDate.now());

        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zdf = currentDate.atStartOfDay(zoneId);

        return Date.from(zdf.toInstant());
    }


    /**
     * localDateTime转换为Date
     *
     * @param localDateTime
     * @return
     */
    public  Date localDateTimeConvert(LocalDateTime localDateTime) {
        //如果设置为空,择获取当前时间
        LocalDateTime currentDate = Optional.ofNullable(localDateTime)
                .orElse(LocalDateTime.now());

        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zdf = currentDate.atZone(zoneId);

        return Date.from(zdf.toInstant());
    }


    /**
     * 将LocalDate 格式化
     *
     * @param localDate
     * @param pattern
     * @return
     */
    public  String formatLocalDate(LocalDate localDate, String pattern) {
        //如果设置为空,择获取当前时间
        LocalDate currentDate = Optional.ofNullable(localDate)
                .orElse(LocalDate.now());

        String currentPattern = Optional.ofNullable(pattern).orElse(DateUtil.PATTERN_DATE);

        DateTimeFormatter ofPattern = DateTimeFormatter.ofPattern(currentPattern);

        return ofPattern.format(currentDate);
    }


    /**
     * 将localDateTime格式化
     *
     * @param localDateTime
     * @param pattern
     * @return
     */
    public  String formatLocalDateTime(LocalDateTime localDateTime, String pattern) {
        //如果设置为空,择获取当前时间
        LocalDateTime currentDate = Optional.ofNullable(localDateTime)
                .orElse(LocalDateTime.now());

        String currentPattern = Optional.ofNullable(pattern).orElse(DateUtil.PATTERN_DATE);

        DateTimeFormatter ofPattern = DateTimeFormatter.ofPattern(currentPattern);

        return ofPattern.format(currentDate);
    }


    /**
     * 统计两个时间的相隔时间
     *
     * @param startTime
     * @param endTime
     * @return
     */
    public  Long betweenTime(LocalDateTime startTime, LocalDateTime endTime, DateUnit dateUnit) {

        DateUnit currentUnit = Optional.ofNullable(dateUnit).orElse(DateUnit.Millis);
        Long time = null;
        Duration between = Duration.between(startTime, endTime);
        switch (currentUnit) {
            case Millis:
                time = between.toMillis();
                break;
            case SECOND:
                time = between.toMinutes();
                break;
            case HOUR:
                time = between.toHours();
                break;
            case DAY:
                time = between.toDays();
                break;
            default:
                log.info("未找到对应的处理信息");
                break;

        }

        return time;
    }


    /**
     * 统计两个时间的相隔时间
     *
     * @param startTime
     * @param endTime
     * @return
     */
    public  Long between(LocalDate startTime, LocalDate endTime, DateUnit dateUnit) {

        DateUnit currentUnit = Optional.ofNullable(dateUnit).orElse(DateUnit.Millis);
        Long time = null;
        Duration between = Duration.between(startTime, endTime);
        switch (currentUnit) {
            case DAY:
                time = between.toDays();
                break;
            default:
                log.info("未找到对应的处理信息");
                break;
        }
        return time;
    }

    /**
     * 获取本月最后一天时间
     *
     * @param localDate
     * @return
     */
    public  LocalDate lastDayLocalDate(LocalDate localDate) {
        LocalDate today = Optional.ofNullable(localDate).orElse(LocalDate.now());

        return today.with(TemporalAdjusters.lastDayOfMonth());
    }


    /**
     * 获取本月最后一天时间
     *
     * @param localDate
     * @return
     */
    public  LocalDateTime lastDayLocalDateTime(LocalDateTime localDate) {
        LocalDateTime today = Optional.ofNullable(localDate).orElse(LocalDateTime.now());

        return today.with(TemporalAdjusters.lastDayOfMonth());
    }


    /**
     * 获取对比时间
     * @param localDate
     * @param day
     * @return
     */
    public   LocalDate plusDays(LocalDate localDate,Integer day){
        LocalDate today = Optional.ofNullable(localDate).orElse(LocalDate.now());

        return today.plusDays(day);
    }

    /**
     *
     * @param localDate
     * @param day
     * @return
     */
    public   LocalDateTime plusDaysTime(LocalDateTime localDate,Integer day){
        LocalDateTime today = Optional.ofNullable(localDate).orElse(LocalDateTime.now());

        return today.plusDays(day);
    }
}

package me.zf.simpleboot.common.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @author 疯信子
 * @version 1.0
 * @date 2019/9/22.
 */
@Getter
@AllArgsConstructor
public enum DateUnit {

    Millis("毫秒"),
    SECOND("秒"),
    MINUTE("分钟"),
    HOUR("小时"),
    DAY("天");

    private String desc;
}

一文解决Scala中的时间处理 ​ 今天来介绍Scala获取时间的方式,及时间的处理。与Java获取的方式基本相同。主要是Java自带类LocalDateTime和Hutool包中时间处理的方式。基本可以覆盖所有的时间需求。 ​ 时间处理主要分为以下几种方式,1. 时间获取,时间格式化,字符串时间的解析,时间求差,获取时间的开始和结束。另外有hutool包中有计算年龄和求是否瑞年的方法。 废话不多说,直接开始 1... 阅读详情

相关推荐

Java DateUtil时间工具类

在实际工作中总结下来的时间工具类,不是很多,够用就行,后期继续增加

Java工程师居家必备的IntelliJ IDEA Top10插件

本文为Java开发者推荐了10款提升IntelliJ IDEA开发效率的核心插件,涵盖代码效率、质量保证、技术栈支持和协作工具等多个维度。主要内容包括: 效率工具:KeyPromoterX快捷键训练、Tabnine AI代码补全 质量保障:SonarLint实时检测、CheckStyle规范检查 技术栈增强:Spring Assistant和MyBatis CodeHelperPro 协作工具:GitToolBox增强版控、Docker容器支持 开发者体验:PresentationAssistant演示工具

油墨香^-^的博客 3184

DateUtil日期工具类

安卓的时间工具类,包括日期格式化,时间戳转化成日期字符串,获取时间,获取年月份,上一个月,下一个月,闰年等等与日期时间相关的工具

JAVA日期工具类,简单实用、支持计算工作日、节假日和休息日

java的日期操作一直都是比较鸡肋,用起来超麻烦的,所以我自己写了一个工具类。 点击查看代码源码 代码依赖 org.apache.commons.lang3 的包 工具类方法的使用 创建时间日期 // 当前时间 DateUtil.DateTime date = DateUtil.date(); // 使用 java.util.Date 创建 Date jdkDate =

lnkToKing的博客 5013

车载测试面试题总结

首先确认是什么问题,如果是测试软件的问题就先确定自己的测试方法有没有问题,如果没有问题,那就是测试软件的问题,这时候就需要提bug 进行跟踪,(比如BCM测试的时候,先明确测试的输入,对输入)进行需求分析,然后设计测试用例,进行用例评审,评审完执行测试用例形成最终的版本,台架分为:hil(黑尔)台架,单个控制器的台架、整车台架、车身台架、动力系统台架等,主要验证其功能,或者实车无法满足的测试环境。这个人不可能一直,点击几千次或者多少次几个小时连续点击,人不可能一直在点。因为要模拟一下这个稳定性,

woaxiaoqing的博客 7818

手把手教你用STM32CubeMX配置I3C通信(含动态地址分配实战)

本文提供了一份基于STM32CubeMX配置I3C通信的实战指南,重点讲解了动态地址分配的实现步骤。通过详细的工程配置、从设备枚举、CCC命令使用及数据读写示例,帮助开发者快速掌握这一高效通信协议,以替代传统的I2C或SPI接口,满足多传感器连接与低功耗设计需求。

c8d9e0f1的博客 545

【Java】JDK1.8新特性Date类----日期/时间改进

一、为什么我们需要新的Java日期/时间API? 1.8之前JDK自带的日期处理类非常不方便,我们处理的时候经常是使用的第三方工具包,比如commons-lang包等。不过1.8出现之后这个改观了很多,比如日期时间的创建、比较、调整、格式化、时间间隔等。这些类都在java.time包下。比原来实用了很多。 二、Java8日期/时间API的特点 不变性:新的日期/时间API中,所有的类都是不可...

wyz0516071128的博客 1万+

高斯-约当(Gauss-Jordan)消元法——c++代码实现

具体算法的详细原理请参照此篇博客:高斯-约当(Gauss-Jordan)消元法下面是具体c++代码,不保证程序最优化,提供一个可行的程序,供大家改进,同时感谢大家提意见。——大神勿喷呀,我是一个小菜鸟~void Guss_Jordan(int n,double *a)//阶数n 系数矩阵a { double*a_temp = new double[n*n * 2];//a与单位矩阵的组合

zwz的学习之路 6874

Jdk1.8日期类(LocalDate、LocalTime、LocalDateTime)

Jdk1.8新增三大日期常量类,与String类相同都是通过final来修饰,线程安全。LocalDate:表示日期(年月日)LocalTime :表示时间(时分秒)LocalDateTime:表示时间+ 日期 (年月日时分秒),是java8最常用的日期类。

一码归一码@ 2366

后台扫描工具 - 御剑(珍藏版)附下载

版本说明:御剑后台扫描珍藏版 下载地址:安装包放下方网盘里了 链接:https://pan.baidu.com/s/1Bn7GtWb7AStcjzVahFOjSQ 提取码:zkaq 使用环境:windows 标题工具说明: 御剑后台扫描珍藏版是T00LS大牛的作品,方便查找用户后台登陆地址,同时也为程序开发人员增加了难度,尽量独特的后台目录结构。 附带很强大的字典,字典我们也是可以自己修改的,继续增加规则。 一、御剑后台扫描工具简介: 1、扫描线程自定义:用户可根据自身电脑的配置来设置调节扫描线程 2、

hackzkaq的博客 4万+

Halcon: 获取仿射矩形-rectangle2的四个顶点、四条边的中点

Halcon 工业应用实用教程中的一个例子: * CenterY : 仿射矩形中心y * CenterX: 仿射矩形中心x * Phi: 仿射矩形角度 * Len1: 仿射矩形宽的一半 * Len2: 仿射矩形高的一半 * CornerY: 仿射矩形端点y * CornerX: 仿射矩形端点x * LineCenterY: 仿射矩形边中点y * LineCenterx: 仿射矩形边中点x * 矩...

ruotianxia的博客 8574

JDK1.8新特性---新时间日期API

JDK1.8新特性---新时间日期API

Mr.Cui的Java学习之路 2586

从PWM到正弦波:RC低通滤波器的魔法转换之旅

本文详细介绍了如何利用RC低通滤波器将STM32F103生成的PWM信号转换为高质量正弦波的技术原理与实践方法。通过分析滤波器设计、参数计算、硬件实现及Proteus仿真验证,为嵌入式开发者提供了一套完整的PWM转正弦波解决方案,适用于电机控制、音频信号生成等多种应用场景。

jupi8的博客 381

4hutool实战:DateUtil-格式化时间

hutool实战:把日期按照不同的需求格式化成对应的日期字符串 关键字:java java JAVA hutool hutool Hutool 工具类 工具类 工具类 DateUtil DateUtil DateUtil

小虚竹的专栏 12万+

地平线旭日X3 安装xfce桌面+VNC查看USB摄像头

VNC是Virtual Network Computing的缩写,它是一种使用RFB(Remote Frame Buffer)协议的用于控制远程电脑的图形桌面分享系统。xfce桌面相比于GNOME桌面更加轻量,占用的资源更少,在没有GPU的设备上也可以运行(旭日的Desktop版本从外观上好像就是xfce桌面,具体没有尝试)。可以使用专用的VNC客户端连接到开发板,例如vnc viewer。板子默认带有openssh-server,因此,WiFi热点连接成功后,就可以使用ssh登录开发板了。

bingdund的博客 509

手把手教你在openclaw中白嫖英伟达羊毛调用GLM5/Minimax2.1/Kimi K 2.5等模型

本文介绍如何在OpenClaw中免费调用英伟达平台的GLM5、Minimax2.1和Kimi K2.5等模型。通过在openclaw.json配置文件中添加NVIDIA的API信息,设置免费模型参数(如contextWindow和maxTokens),并执行简单命令即可切换默认模型。该方法可节省token消耗成本,最后需重启gateway使配置生效。文中还提供了使用其他API平台时的配置模板。

Science prince的博客 5103

Java JDK1.8时间区间计算类Period和Duration

在Java项目中,时间格式化在很多时候都会用到。在JDK1.8之前我们都是通过自己封装的时间工具类来实现,在1.8之后我们可以使用它提供的Period和Duration来实现时间区间和转换计算。使用这两个工具,我们可以计算年、月、日、周、天、时、分、秒、纳秒等。 目录 传统封装Util工具 Period时间区间计算 Duration时间计算 传统封装Util工具 这种工具类在项目中非常普遍: package com.patrol.beans.util; import java.text.P

纸上得来终觉浅,绝知此事要躬行 1779

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

基于JDK1.8的时间工具类

废话没有,看代码 package org.atm.dc.app.util; import java.time.Instant; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Date; /** * 基于...

oneTreeTallTall 564

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Hutool工具集之DateUtil(日期时间工具)详解使用

/当前时间字符串:now = 2019-09-17 16:59:23。//当前时间:date2 = 2019-09-17 16:59:23。//当前时间:date3 = 2019-09-17 16:59:23。//当前时间:date = 2019-09-17 16:59:23。//常用偏移,结果:newDate2 = 2019-09-20 17:35:35。//常用偏移,结果:newDate3 = 2019-09-17 14:35:35。//一天的开始,结果:2019-09-17 00:00:00。....

daxiong0816的博客 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jdk8时间工具类

【代码】jdk8时间工具类。

kuangtengda的博客 169

Hutool 常用工具类介绍-DateUtil

前言 日期格式转化及计算,比较使我们最常用的功能,现就工具类用法归结如下 字符串转日期 DateUtil.parse 方法 DateUtil.parse 方法会自动识别一些常用格式,包括: yyyy-MM-dd HH:mm:ss yyyy/MM/dd HH:mm:ss yyyy.MM.dd HH:mm:ss yyyy年MM月dd日 HH时mm分ss秒 yyyy-MM-dd yyyy/MM/dd yyyy.MM.dd HH:mm:ss HH时mm分ss秒 yyyy-MM-dd HH:mm yyyy-MM-d

liuerchong的博客 1万+

JavaSE-JDK常用类-日期时间API

1.JDK8之前日期时间API 1.1 java.lang.System类 System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。 此方法适于计算时间差。 计算世界时间的主要标准有: UTC(Coordinated Universal Time) GMT(Greenwich Mea...

feicongcong的博客 303

oracle dateutil函数,DateUtil.parseCST日期转换的问题

版本情况JDK版本: Oracle JDK 1.8hutool版本: 5.1.5问题描述(包括截图)由于业务需要,我从外部得到了一个时间字符串,格式为“Mon Mar 02 19:43:45 CST 2020”,在使用DateUtil.parseCST做转换的时候却得到了一个错误的结果,代码如下(注释为输出的结果):// 输出:2020-03-03 09:43:45System.out.pr...

weixin_35689877的博客 1098

Hutool工具集之DateUtil(日期时间工具)的使用

Hutool工具集之DateUtil(日期时间工具)详解使用

Zhaof_Notes 4416

DateUtil

import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.*; import java.time.chrono.ChronoZonedDateTime; import java.time.format.DateTimeFormatte...

FanErZong的博客 194
上一篇: Spring boot记录下常见错误
下一篇: idea 中maven出现 Unable to import maven project: See logs for details
疯信子To
博客等级 码龄14年 12粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值