当前位置: 首页 > news >正文

[java][代码]DateUtil用于处理日期和时间

代码是一个Java工具类,名为DateUtil,用于处理日期和时间。它提供了多种日期格式的转换和解析功能。以下是类中定义的一些关键点:

  1. 日期格式常量:定义了多个DateFormat对象,用于不同的日期时间格式,例如yyyy-MM-ddyyyy-MM-dd HH:mm:ss等。

  2. 格式化方法:提供了多个formatDate方法的重载版本,用于将Date对象或其它日期对象格式化为指定格式的字符串。

  3. 获取当前时间getNowTime方法允许用户传入一个日期格式字符串,并返回当前日期时间按照该格式的字符串表示。

  4. 解析方法:提供了parse2Calparse2Date方法,用于将字符串解析为GregorianCalendarDate对象。

  5. 特殊日期解析getSwitchDategetSwitchDate2方法用于解析特定格式的日期字符串。

  6. 日期分隔符常量DATE_SEPARATOR定义了程序中主要使用的日期分隔符,用于解析日期。

  7. 字符串解析工具sToken是一个StringTokenizer对象,用于在解析日期时分割字符串。

这个工具类非常实用,因为它封装了日期时间的常见操作,使得在Java程序中处理日期和时间变得更加方便。


import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.StringTokenizer;/*** @author lixiang* * 日期结构化类*/
public class DateUtil {public static final DateFormat df = new SimpleDateFormat("yyyy-MM-dd");public static final DateFormat dfv2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public static final DateFormat dfv3 = new SimpleDateFormat("yyyy");public static final DateFormat dfv4 = new SimpleDateFormat("yyMMddHHmmss");public static final DateFormat dfv5 = new SimpleDateFormat("yyyy/MM/dd HH:mm");public static final DateFormat dfvcn = new SimpleDateFormat("yyyy年MM月dd日");public static final DateFormat dfv6 = new SimpleDateFormat("yyyyMMddHHmmss");public static final DateFormat dfv7 = new SimpleDateFormat("yyyyMMdd");public static final DateFormat dfv8 = new SimpleDateFormat("yyyy-MM-dd HH:mm");public static final String formatDate(Date date) {return df.format(date);}public static final String formatDate(Object date) {return df.format(date);}public static final String formatDateV2(Date date) {return dfv2.format(date);}public static final String formatDateV2(Object date) {return dfv2.format(date);}public static final String formatDateOnlyYear(Date date) {return dfv3.format(date);}public static final String formatDateOnlyYear(Object date) {return dfv3.format(date);}public static final String formatDateV4(Date date) {return dfv4.format(date);}public static final String formatDateV4(Object date) {return dfv4.format(date);}public static final String formatDateEncodeCN(Date date) {return dfvcn.format(date);}public static final String formatDateEncodeCN(Object date) {return dfvcn.format(date);}public static final String formatDateV5(Date date) {return dfv5.format(date);}public static final String formatDateV5(Object date) {return dfv5.format(date);}public static final String formatDateV6(Date date) {return dfv6.format(date);}public static final String formatDateV6(Object date) {return dfv6.format(date);}public static final String formatDateV7(Date date) {return dfv7.format(date);}public static final String formatDateV7(Object date) {return dfv7.format(date);}public static final String formatDateV8(Date date) {return dfv8.format(date);}public static final String formatDateV8(Object date) {return dfv8.format(date);}public static final String getNowTime(String syntax) {DateFormat dateFormat = new SimpleDateFormat(syntax);return dateFormat.format(new Date());}public static final SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");public static final SimpleDateFormat sFullFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");/*** 程序中主要的日期分隔符为"-"和"/",且日期序列为“年/月/日”型,其内容缺一不可 例如:09/02/02或2009-02-02*/public static final String DATE_SEPARATOR = "-/";/** 作日期分析之用 */static StringTokenizer sToken;/** 将日期变为字符串格式 * */public static String format(GregorianCalendar pCal) {return sDateFormat.format(pCal.getTime());}public static String format(Date pDate) {return sDateFormat.format(pDate);}public static String fullFormat(Date pDate) {return sFullFormat.format(pDate);}/** 将字符串格式的日期转换为Calender* */public static GregorianCalendar parse2Cal(String pDateStr) {sToken = new StringTokenizer(pDateStr, DATE_SEPARATOR);int vYear = Integer.parseInt(sToken.nextToken());// GregorianCalendar的月份是从0开始算起的,变态!!int vMonth = Integer.parseInt(sToken.nextToken()) - 1;int vDayOfMonth = Integer.parseInt(sToken.nextToken());return new GregorianCalendar(vYear, vMonth, vDayOfMonth);}/** 将字符串类型的日期(yyyy-MM-dd)转换成Date* */public static Date parse2Date(String pDate) {try {return sDateFormat.parse(pDate);} catch (ParseException e) {e.printStackTrace();return null;}}/*** 将字符串转换成一个日期* * @param startDate* @return*/public static Date getSwitchDate(String startDate) {Date dt = null;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {dt = sdf.parse(startDate);} catch (Exception e) {e.printStackTrace();}return dt;}/*** 将字符串转换成一个日期* * @param startDate* @return*/public static Date getSwitchDate2(String startDate) {Date dt = null;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try {dt = sdf.parse(startDate);} catch (Exception e) {e.printStackTrace();}return dt;}public static Date getSwitchDate3(String startDate) {Date dt = null;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");try {dt = sdf.parse(startDate);} catch (Exception e) {e.printStackTrace();}return dt;}
}

相关文章:

  • excel怎么转换json
  • C++初阶:STL详解(九)——stacke和queue的模拟实现
  • kmeans聚类分析 生活使用案例
  • 解决Windows远程桌面 “为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多,请稍后片刻再重试,或与系统管理员或技术支持联系“问题
  • Java之多态
  • 关于贪心算法
  • 【系统交付资料】软件文档交付清单整理套用原件(Word,PPT,Excel)
  • 企业如何保护自身通信渠道被黑客攻击
  • 【蚂蚁HR-注册/登录安全分析报告】
  • kubernetes存储入门(kubernetes)
  • 鸿蒙面试题库收集(一):ArkTSArkUI-基础理论
  • 支付宝远程收款api之小荷包跳转码
  • 【算法——KMP】
  • Spring Boot 整合 Keycloak
  • K8s flink-operator 例子
  • [case10]使用RSQL实现端到端的动态查询
  • angular2开源库收集
  • CentOS 7 防火墙操作
  • Logstash 参考指南(目录)
  • Ruby 2.x 源代码分析:扩展 概述
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 官方解决所有 npm 全局安装权限问题
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 力扣(LeetCode)22
  • 利用DataURL技术在网页上显示图片
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #mysql 8.0 踩坑日记
  • #NOIP 2014# day.2 T2 寻找道路
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (07)Hive——窗口函数详解
  • (10)ATF MMU转换表
  • (arch)linux 转换文件编码格式
  • (c语言)strcpy函数用法
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (理论篇)httpmoudle和httphandler一览
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (十三)Flask之特殊装饰器详解
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .describe() python_Python-Win32com-Excel
  • .NET C# 配置 Options
  • .net core docker部署教程和细节问题