自定义date工具类 DateUtils.java
自定义date工具类 DateUtils.java
简介
- Date日期类型的工具类。
api
- 日期格式化 format(Date date);
- 日期格式化 format(Date date, String pattern);
- 计算距离现在多久,非精确 getTimeBefore(Date date);
- 计算距离现在多久,精确 getTimeBeforeNow(Date date);
源码
-
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;/*** @说明:Date工具类*/ public class DateUtils {public final static String format_1 = "yyyy-MM-dd";public final static String format_2 = "yyyy-MM-dd HH:mm:ss";public static void main(String[] args) throws ParseException {System.err.println(format(new Date()));System.out.println(getTimeBeforeNow(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2020-08-16 12:17:43")));System.out.println(getTimeBefore(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2020-08-16 12:17:43")));}public static String format(Date date) {return format(date, format_1);}public static String format(Date date, String pattern) {if (date != null) {SimpleDateFormat df = new SimpleDateFormat(pattern);return df.format(date);}return null;}/*** 方法功能说明:@1.计算距离现在多久,非精确* "126天前"*/public static String getTimeBefore(Date date) {Date now = new Date();long l = now.getTime() - date.getTime();long day = l / (24 * 60 * 60 * 1000);long hour = (l / (60 * 60 * 1000) - day * 24);long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60);long s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);String r = "";if (day > 0) {r += day + "天";} else if (hour > 0) {r += hour + "小时";} else if (min > 0) {r += min + "分";} else if (s > 0) {r += s + "秒";}r += "前";return r;}/*** 方法功能说明:@1.计算距离现在多久,精确* "126天10小时27分28秒前"*/public static String getTimeBeforeNow(Date date) {Date now = new Date();long l = now.getTime() - date.getTime();long day = l / (24 * 60 * 60 * 1000);long hour = (l / (60 * 60 * 1000) - day * 24);long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60);long s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);String r = "";if (day > 0) {r += day + "天";}if (hour > 0) {r += hour + "小时";}if (min > 0) {r += min + "分";}if (s > 0) {r += s + "秒";}r += "前";return r;}}
相关文章:
自定义date工具类 DateUtils.java
自定义date工具类 DateUtils.java 简介 Date日期类型的工具类。 api 日期格式化 format(Date date);日期格式化 format(Date date, String pattern);计算距离现在多久,非精确 getTimeBefore(Date date);计算距离现在多久,精确…...
Linux(Ubuntu)安装docker
2017年的3月1号之后,Docker 的版本命名开始发生变化,同时将 CE 版本和 EE 版本进行分开。 Docker社区版(CE):为了开发人员或小团队创建基于容器的应用,与团队成员分享和自动化的开发管道。docker-ce 提供了简单的安装…...
Apache Poi 实现Excel多级联动下拉框
由于最近做的功能,需要将接口返回的数据列表,输出到excel中,以供后续导入,且网上现有的封装,使用起来都较为麻烦,故参考已有做法封装了工具类。 使用apache poi实现excel联动下拉框思路 创建隐藏单元格&a…...
常见的 HTML<meta> 标签的 name 属性及其作用
HTML中的 <meta> 标签可以通过 name 属性提供元数据,这些元数据可以用于指定有关文档的信息,以及控制浏览器和搜索引擎的行为。name 属性通常与其他属性一起使用,如 content、charset、http-equiv 等,以提供更具体的元数据信…...
【网络安全】理解报文加密、数字签名能解决的实际问题
文章目录 前言1. 防止报文泄露 —— 加密体系的出现1.1 理解非对称加密体系的实施难点1.2 加密体系的实际应用 2. 防止报文被篡改 —— 数字签名的出现2.1 数字签名的原理2.2 数字签名的实施难点2.2 数字签名的实际应用 —— 引入摘要算法 3. 实体鉴别 —— CA证书 后记 前言 …...
linux中安装nodejs,卸载nodejs,更新nodejs
卸载nodejs 卸载node sudo apt-get remove nodejs清理掉自动安装的并且不需要软件包 sudo apt autoremove查看node相关的文件 sudo whereis node如果有文件需要手动删除文件 删除该文件命令 sudo rm -rf /usr/local/bin/node在此查看node -v 是未找到,说明你已经…...
浅谈Python网络爬虫应对反爬虫的技术对抗
在当今信息时代,数据是非常宝贵的资源。而作为一名专业的 Python 网络爬虫程序猿,在进行网页数据采集时经常会遭遇到各种针对爬虫行为的阻碍和限制,这就需要我们掌握一些应对反爬机制的技术手段。本文将从不同层面介绍如何使用 Python 进行网…...
代理池在过程中一直运行
Hey,爬虫达人们!在爬虫的过程中,要保持代理池的稳定性可不容易。今天就来和大家分享一些实用经验,教你如何让代理池在爬虫过程中一直运行!方法简单易行,让你的爬虫工作更顺畅. 在进行爬虫工作时࿰…...
基于Java+SpringBoot+Vue前后端分离党员教育和管理系统设计和实现
博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…...
【flutter直接上传图片到阿里云OSS】
flutter直接上传文件到阿里云需要获取凭证,通过调用阿里云获取凭证的接口能拿到下面这些参数 {"StatusCode": 200,"AccessKeyId": "STS.NSsrKZes4cqm.....","AccessKeySecret": "7eGnLZaEFsRCGYJAnrtdE9n....."…...
【MySQL系列】表的内连接和外连接学习
「前言」文章内容大致是对MySQL表的内连接和外连接。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、内连接二、外连接2.1 左外连接2.2 右外连接 一、内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,前面篇章学习的…...
C语言日常刷题 3
文章目录 题目答案与解析1234、5、6、 题目 1.已知函数的原型是: int fun(char b[10], int *a); ,设定义: char c[10];int d; ,正确的调用语句是( ) A: fun(c,&d); B: fun(c,d); C: fun(&c,&d…...
.net6中, 用数据属性事件触发 用httpclient向服务器提交Mes工单
MES开发中, 客户往往会要求 工单开始时记录工艺数据, 工单结束时将这些工艺数据回传到更上一级的WES系统中. 因为MES系统和PLC 是多线程读取, 所以加锁, 事件触发是常用手段. using MyWebApiTest.PLC; using MyWebApiTest.Service; using MyWebApiTest.Service.Entry; using M…...
sin(A)的意义
若存在矩阵A,则sin(A)表示对于矩阵A的每一个元素,进行对应的函数运算。 如:...
ctfshow-web14
0x00 前言 CTF 加解密合集CTF Web合集 0x01 题目 0x02 Write Up 首先看到这个,swith,那么直接输入4,则会打印$url的值 然后访问一下 查看一下,发现完整的请求是http://c7ff9ed6-dccd-4d01-907a-f1c61c016c15.challenge.ctf.sho…...
数据结构—循环队列(环形队列)
循环队列(环形队列) 循环队列的概念及结构循环队列的实现 循环队列的概念及结构 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。…...
vue3 实现按钮权限管理
在做后台管理系统时,经常会有权限管理的功能,这里来记录一下关于按钮权限管理的实现方法 1、自定义指令 v-permission。新建js文件用来写指令代码。 export default function btnPerms(app) {app.directive(permission, {mounted(el, binding) {if (!p…...
C语言练习4(巩固提升)
C语言练习4 选择题 前言 面对复杂变化的世界,人类社会向何处去?亚洲前途在哪里?我认为,回答这些时代之问,我们要不畏浮云遮望眼,善于拨云见日,把握历史规律,认清世界大势。 选择题 …...
将AI融入CG特效工作流;对谈Dify创始人张路宇;关于Llama 2的一切资源;普林斯顿LLM高阶课程;LLM当前的10大挑战 | ShowMeAI日报
👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 将AI融入CG特效工作流,体验极致的效率提升 BV1pP411r7HY 这是 B站UP主 特效小哥studio 和 拓星研究所 联合投稿的一个AI特…...
Vue2学习笔记のVue中的ajax
目录 Vue中的ajaxvue脚手架配置代理方法一方法二 插槽 hello, 这篇文章是Vue2学习笔记的第四篇,也是第四章:Vue中的ajax。 Vue中的ajax vue脚手架配置代理 方法一 在vue.config.js中添加如下配置: devServer:{proxy:"http://localho…...
OpenCVSharp摄像头开发避坑指南:C#实现高清录像+实时滤镜(WinForm版)
OpenCVSharp工业级摄像头开发实战:高清录像与实时滤镜的进阶技巧 在工业视觉检测和实时直播领域,稳定高效地采集视频流是核心需求。C#开发者常选择OpenCVSharp作为计算机视觉开发工具,但实际应用中总会遇到帧率不稳定、资源泄漏或参数配置不当…...
如何通过手机号快速查询QQ号:3分钟解决账号遗忘难题
如何通过手机号快速查询QQ号:3分钟解决账号遗忘难题 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 在数字时代,QQ账号作为重要的社交和工作工具,其安全性与可访问性至关重要。然而,更…...
别再手动算脉冲了!用STM32的编码器接口模式(TIM_EncoderInterfaceConfig)实现电机测速,附完整代码
STM32硬件编码器接口实战:精准电机测速的工程化实现 在电机控制系统中,转速测量是闭环控制的基础环节。传统基于外部中断的软件计数方案不仅占用CPU资源,还面临脉冲丢失和方向误判的风险。STM32系列微控制器内置的硬件编码器接口(…...
Qt 5.14.2下MQTT开发全攻略:从源码编译到实战应用(附完整代码)
Qt 5.14.2下MQTT开发全流程实战指南 在物联网应用开发中,MQTT协议因其轻量级和高效性成为设备通信的首选方案。对于使用Qt框架的开发者而言,将MQTT集成到项目中可以构建出功能强大的跨平台物联网应用。本文将深入探讨在Windows平台上使用Qt 5.14.2进行MQ…...
3个创新方法:用Krita AI Diffusion插件实现智能动画制作
3个创新方法:用Krita AI Diffusion插件实现智能动画制作 【免费下载链接】krita-ai-diffusion Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required. 项目地址: https://gitco…...
AW88195音频编解码器驱动从MTK到RK平台的移植实践
1. 认识AW88195音频编解码器驱动移植 第一次接触AW88195音频编解码器驱动移植时,我也是一头雾水。这个来自艾为的音频芯片主要用于提升扬声器音质,但厂商提供的驱动包往往只适配特定平台。比如这次遇到的AW88195_Driver_MTK_V0.1.6.zip就是专门为MTK平台…...
Yi-Coder-1.5B代码生成实战:快速搭建本地AI编程助手
Yi-Coder-1.5B代码生成实战:快速搭建本地AI编程助手 1. 引言:你的私人编程助手,本地就能跑 还在为写重复的样板代码而烦恼吗?或者面对一个新框架的API文档,不知道从何下手?如果你是一名开发者,…...
如何快速实现ngx-bootstrap国际化:多语言应用开发完整指南
如何快速实现ngx-bootstrap国际化:多语言应用开发完整指南 【免费下载链接】ngx-bootstrap Fast and reliable Bootstrap widgets in Angular (supports Ivy engine) 项目地址: https://gitcode.com/gh_mirrors/ng/ngx-bootstrap ngx-bootstrap作为Angular生…...
Fay框架监控告警系统设计:异常实时通知
Fay框架监控告警系统设计:异常实时通知 【免费下载链接】Fay fay是一个帮助数字人(2.5d、3d、移动、pc、网页)或大语言模型(openai兼容、deepseek)连通业务系统的agent框架。 项目地址: https://gitcode.com/GitHub_…...
从卡顿到流畅:Win11Debloat开源工具3步解决Windows系统优化难题
从卡顿到流畅:Win11Debloat开源工具3步解决Windows系统优化难题 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本,用于从Windows中移除预装的无用软件,禁用遥测,从Windows搜索中移除Bing,以及执行各种其他更改…...
