================================

©Copyright 蕃薯耀 2020-01-19

https://www.cnblogs.com/fanshuyao/

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; import org.apache.commons.lang.StringUtils; public class DateUtils { public final static String DATE = "yyyy-MM-dd";
public final static String DATE_SLASH = "yyyy/MM/dd";
public final static String DATE_CHINESE = "yyyy年MM月dd日"; public final static String DATE_TIME = "yyyy-MM-dd HH:mm:ss";
public final static String DATE_TIME_HOURS = "yyyy-MM-dd HH";
public final static String DATE_TIME_MINUTES = "yyyy-MM-dd HH:mm";
public final static String DATE_TIME_SLASH = "yyyy/MM/dd HH:mm:ss";
public final static String DATE_TIME_CHINESE = "yyyy年MM月dd日 HH时mm分ss秒"; public final static String DATE_TIME_MILLION = "yyyy-MM-dd HH:mm:ss:SSS"; public final static String YEAR = "yyyy";
public final static String YEAR_TO_MONTH = "yyyyMM";
public final static String YEAR_TO_DATE = "yyyyMMdd";
public final static String YEAR_TO_SECOND = "yyyyMMddHHmmss";
public final static String YEAR_TO_MILLION = "yyyyMMddHHmmssSSS"; public final static String ZERO_TIME = " 00:00:00";
public final static String ZERO_TIME_MILLION = " 00:00:00:000";
public final static String ZERO_TIME_WITHOUT_HOURS = ":00:00";
public final static String ZERO_TIME_WITHOUT_MINUTES = ":00"; /**
* 字符串转成日期、时间格式
* @param dateString 日期字符串
* @param pattern 格式化类型,默认为yyyy-MM-dd,其它使用DateUtils.xxx
* @return
* @throws ParseException
*/
public static Date parse(String dateString, String pattern) throws ParseException{
if(StringUtils.isBlank(dateString)){
return null;
}else{
dateString = dateString.trim();
if(StringUtils.isBlank(pattern)){
pattern = DATE;
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
return simpleDateFormat.parse(dateString);
}
} /**
* 字符串转成日期(yyyy-MM-dd)格式
* @param dateString 日期字符串
* @return Date
* @throws ParseException
*/
public static Date parseDate(String dateString) throws ParseException{
return parse(dateString, null);
} /**
* 字符串转成时间(yyyy-MM-dd HH:mm:ss)格式
* @param dateString 日期字符串
* @return
* @throws ParseException
*/
public static Date parseDateTime(String dateString) throws ParseException{
if(StringUtils.isBlank(dateString)){
return null;
}else{
dateString = dateString.trim();
if(dateString.length() == DATE_TIME_HOURS.length()){
return parse(dateString, DATE_TIME_HOURS);
}else if(dateString.length() == DATE_TIME_MINUTES.length()){
return parse(dateString, DATE_TIME_MINUTES);
}else if(dateString.length() == DATE_TIME_MILLION.length()){
return parse(dateString, DATE_TIME_MILLION);
}else{
return parse(dateString, DATE_TIME);
}
}
} /**
* 时间转字符串
* @param date 时间
* @param pattern 格式化类型,默认为yyyy-MM-dd HH:mm:ss,其它使用DateUtils.xxx
* @return
*/
public static String format(Date date, String pattern){
if(date == null){
return "";
}else{
if(StringUtils.isBlank(pattern)){
pattern = DATE_TIME;
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
return simpleDateFormat.format(date);
}
} /**
* 时间转日期字符串(yyyy-MM-dd)
* @param date 时间
* @return
*/
public static String formatDate(Date date){
return format(date, DATE);
} /**
* 时间转日期字符串(yyyy-MM-dd HH:mm:ss)
* @param date 时间
* @return
*/
public static String formatDateTime(Date date){
return format(date, null);
} /**
* 将日期格式转换成时间(yyyy-MM-dd HH:mm:ss)格式
* @param dateString 日期字符串
* @return
*/
public static String dateToDateTime(String dateString){
if(StringUtils.isBlank(dateString)){
return "";
}else{
dateString = dateString.trim();
if(dateString.length() == DATE.length()){
return dateString + ZERO_TIME;
}else if(dateString.length() == DATE_TIME_HOURS.length()){
return dateString + ZERO_TIME_WITHOUT_HOURS;
}else if(dateString.length() == DATE_TIME_MINUTES.length()){
return dateString + ZERO_TIME_WITHOUT_MINUTES;
}else if(dateString.length() == DATE_TIME_MILLION.length()){
return dateString.substring(0, DATE_TIME.length());
}else{
return dateString;
}
}
} /**
* 将日期格式转换成时间(时分秒毫秒)格式
* @param dateString 日期字符串
* @return
*/
public static String dateToDateTimeMillion(String dateString){
if(StringUtils.isBlank(dateString)){
return "";
}else{
dateString = dateString.trim();
return dateString + ZERO_TIME_MILLION;
}
} /**
* 将时间字(yyyy-MM-dd HH:mm:ss)符串转换成日期(yyyy-MM-dd)格式
* @param dateTimeString 时间字符串
* @return String
*/
public static String dateTimeToDate(String dateTimeString){
if(StringUtils.isBlank(dateTimeString)){
return "";
}else{
dateTimeString = dateTimeString.trim();
if(dateTimeString.length() >= DATE.length()){
return dateTimeString.substring(0, DATE.length());
}else{
return dateTimeString;
}
}
} /**
* 将时间(yyyy-MM-dd HH:mm:ss)转换成日期(yyyy-MM-dd)
* @param dateTime 时间
* @return Date
* @throws ParseException
*/
public static Date dateTimeToDate(Date dateTime) throws ParseException{
if(dateTime == null){
return null;
}else{
return parseDate(formatDate(dateTime));
}
} /**
* 获取当前时间(yyyy-MM-dd HH:mm:ss)
* @return Date
*/
public static Date now(){
return new Date();
} /**
* 获取当前时间(yyyy-MM-dd HH:mm:ss)
* @return Date
*/
public static Date dateTime(){
return new Date();
} /**
* 获取当前时间(yyyy-MM-dd HH:mm:ss)
* @return Date
*/
public static Date getDateTime(){
return dateTime();
} /**
* 获取当前日期(yyyy-MM-dd)
* @return Date
* @throws ParseException
*/
public static Date date() throws ParseException{
return dateTimeToDate(new Date());
} /**
* 获取当前日期(yyyy-MM-dd)
* @return Date
* @throws ParseException
*/
public static Date getDate() throws ParseException{
return date();
} /**
* 日期加减天数
* @param date 日期,为空时默认当前时间,包括时分秒
* @param days 加减的天数
* @return
* @throws ParseException
*/
public static Date dateAdd(Date date, int days) throws ParseException{
if(date == null){
date = new Date();
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, days);
return cal.getTime();
} /**
* 日期加减多少月
* @param date 日期,为空时默认当前时间,包括时分秒
* @param months 加减的月数
* @return
* @throws ParseException
*/
public static Date monthAdd(Date date, int months) throws ParseException{
if(date == null){
date = new Date();
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, months);
return cal.getTime();
} /**
* 时间比较
* <p>如果date大于compareDate返回1,小于返回-1,相等返回0</p>
* @param date
* @param compareDate
* @return
* @throws ParseException
*/
public static int dateCompare(Date date, Date compareDate) throws ParseException{
Calendar cal = Calendar.getInstance();
Calendar compareCal = Calendar.getInstance();
cal.setTime(date);
compareCal.setTime(date);
return cal.compareTo(compareCal);
} /**
* 获取两个日期相差的天数,不包含今天
* @param startDate
* @param endDate
* @return
* @throws ParseException
*/
public static int dateBetween(Date startDate, Date endDate) throws ParseException{
Date dateStart = parse(format(startDate, DATE), DATE);
Date dateEnd = parse(format(endDate, DATE), DATE);
return (int)((dateEnd.getTime() - dateStart.getTime()) / 1000/60/60/24);
} /**
* 获取两个日期相差的天数,包含今天
* @param startDate
* @param endDate
* @return
* @throws ParseException
*/
public static int dateBetweenIncludeToday(Date startDate, Date endDate) throws ParseException{
return dateBetween(startDate, endDate) + 1;
} @SuppressWarnings("unused")
public static void main(String[] args) throws Exception {
//System.out.println(dateToDatetime("2018-08-17"));
//System.out.println(dateToDatetimeMillion("2018-08-17"));
Date date = new Date();
//System.out.println(parse("2018-08-17", null));
//System.out.println(parseDate("2018-08-17"));
//System.out.println(parseDate("2018-08-17 11:40"));
//System.out.println(parseDateTime("2018-08-17 11:40"));
//System.out.println(parseDateTime("2018-08-17 11:40:20"));
//System.out.println(parseDateTime("2018-08-17 11:40:20:169")); //System.out.println(format(parseDateTime("2018-08-17 11:40:20:069"), DATE_TIME_MILLION));
//System.out.println(format(date, null));
//System.out.println(formatDate(date));
//System.out.println(formatDateTime(date)); //System.out.println(dateTimeToDate("2018-08-17 11:40"));
//System.out.println(dateTimeToDate("2018-08-17"));
//System.out.println(dateTimeToDate("2018-08-17 11")); //System.out.println(dateTimeToDate(date));
//System.out.println(formatDate(dateTimeToDate(date)));
//System.out.println(formatDateTime(dateTimeToDate(date))); /*
System.out.println(dateToDateTime("2018-08-17"));
System.out.println(dateToDateTime("2018-08-17 12"));
System.out.println(dateToDateTime("2018-08-17 13:10"));
System.out.println(dateToDateTime("2018-08-17 14:10:20"));
System.out.println(dateToDateTime("2018-08-17 15:10:20:158"));
*/ System.out.println(monthAdd(null, 12));
} }

(如果你觉得文章对你有帮助,欢迎捐赠,^_^,谢谢!)

================================

©Copyright 蕃薯耀 2020-01-19

https://www.cnblogs.com/fanshuyao/

Java 日期格式化,Java 日期工具类,Java Date工具类的更多相关文章

  1. C# 日期格式化以及日期常用方法

    一.日期格式化 1.ToString() d 月中的某一天.一位数的日期没有前导零. dd 月中的某一天.一位数的日期有一个前导零. ddd 周中某天的缩写名称,在 AbbreviatedDayNam ...

  2. Mysql 日期格式化 复杂日期区间查询

    前言 最近在做项目涉及到Mysql的复杂日期查询,日期查询其实在数据库中查询其实还是用的挺多的,比如查询开始日期到结束日期的区间信息,查询日期小于有效日期的信息,查询当天的日期,明天的日期,做比较等. ...

  3. 用于JS日期格式化,以及简单运算的Date包装工具类

    1. [文件] yDate.js/** * | yDate.js | Copyright (c) 2013 yao.yl | email: redrainyi@126.com | Date: 2012 ...

  4. Java可视化日历(Date类、DATe Format类、Calendar类综合运用),开发可视化日历小程序

    Java时间日期类综合运用,开发可视化日历小程序 由键盘输入指定格式的日期,打印这个月的日历 1.代码 import java.text.DateFormat; import java.text.Pa ...

  5. js 日期格式化及日期增减

    //Demo:new Date().format("yyyy-MM-dd hh:mm:ss.SSS") Date.prototype.format = function (form ...

  6. Java基础-日期格式化DateFormat类简介

    Java基础-日期格式化DateFormat类简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.DateFormat类概述 DateFormat 是日期/时间格式化子类的抽象 ...

  7. Java SE基础部分——常用类库之SimpleDateFormat(日期格式化)

    取得当前日期,并按照不同日期格式化输入.代码如下: // 20160618 SimpleDateFomat类的使用 日期格式化 练习 package MyPackage; //自己定义的包 impor ...

  8. Java日期时间API系列42-----一种高效的中文日期格式化和解析方法

    中文日期(2021年09月11日 和 二〇二一年九月十一日 )在生活中经常用到,2021年09月11日很好处理直接使用模板:yyyy年MM月dd日:二〇二一年九月十一日比较不好处理,需要每个数字进行转 ...

  9. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  10. Java-Runoob-高级教程-实例-时间处理:01. Java 实例 - 格式化时间(SimpleDateFormat)

    ylbtech-Java-Runoob-高级教程-实例-时间处理:01. Java 实例 - 格式化时间(SimpleDateFormat) 1.返回顶部 1. Java 实例 - 格式化时间(Sim ...

随机推荐

  1. 20194653 面向对象基础3——static、this、包总结

    题目1:编写一个类Computer,类中含有一个求n的阶乘的方法.将该类打包,并在另一包中的Java文件App.java中引入包,在主类中定义Computer类的对象,调用求n的阶乘的方法(n值由参数 ...

  2. 题解【Luogu6022 快乐水】

    \[ Preface \] 大概在半年前出过这道((( 然后当天读完这题,把自己写的 std 改了一下 ll 和特判信息交上去就 A 了. 捡了个大便宜. \[ Description \] 你一开始 ...

  3. 大数据篇:HDFS

    HDFS HDFS是什么? Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File Syste ...

  4. (原)NSQ源码阅读和分析(1)

    原文出处:https://www.cnblogs.com/lihaiping/p/12324371.html 本文记录自己在阅读和学习nsq源码的时候的一些学习笔记,主要目的是个人总结和方便后期查阅. ...

  5. 手机控制电脑第二弹之HIPC

    点击蓝字关注我们 是否很多时候电脑不在身边,又急需要使用,比如正好要用一个文件,又没有放在我们的网盘中,想用手机查看电脑状态,但是很多太复杂的方式不会使用,需要简单的方式,今天方成分享给你 前言 故事 ...

  6. Ansible 学习目录

    1. Ansible 安装 2. Ansible hosts 文件配置 3. Ansible 常用模块 4. Ansible playbook使用

  7. Firewall 防火墙

    firewalld和iptables的关系: firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现.也就是说firewalld和iptables ...

  8. centos6.5和centos7.5统一字符集为zh_CN.UTF-8解决系统和MySQL数据库乱码问题

    linux的服务器需要做的操作 centos6.5下: 修改默认字符集为 zh_CN.UTF-8,如果没有中文语言包可能需要安装中文语言包支持 [root@meinv01 ~]# yum groupi ...

  9. 1215 - Finding LCM

    1215 - Finding LCM   LCM is an abbreviation used for Least Common Multiple in Mathematics. We say LC ...

  10. nrm安装与配置(nrm管理npm源)

    1.nrm nrm(npm registry manager )是npm的镜像源管理工具,有时候国外资源太慢,使用这个就可以快速地在 npm 源间切换 2.安装nrm 在命令行执行命令,npm ins ...