Java 日期格式化,Java 日期工具类,Java Date工具类
================================
©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工具类的更多相关文章
- C# 日期格式化以及日期常用方法
一.日期格式化 1.ToString() d 月中的某一天.一位数的日期没有前导零. dd 月中的某一天.一位数的日期有一个前导零. ddd 周中某天的缩写名称,在 AbbreviatedDayNam ...
- Mysql 日期格式化 复杂日期区间查询
前言 最近在做项目涉及到Mysql的复杂日期查询,日期查询其实在数据库中查询其实还是用的挺多的,比如查询开始日期到结束日期的区间信息,查询日期小于有效日期的信息,查询当天的日期,明天的日期,做比较等. ...
- 用于JS日期格式化,以及简单运算的Date包装工具类
1. [文件] yDate.js/** * | yDate.js | Copyright (c) 2013 yao.yl | email: redrainyi@126.com | Date: 2012 ...
- Java可视化日历(Date类、DATe Format类、Calendar类综合运用),开发可视化日历小程序
Java时间日期类综合运用,开发可视化日历小程序 由键盘输入指定格式的日期,打印这个月的日历 1.代码 import java.text.DateFormat; import java.text.Pa ...
- js 日期格式化及日期增减
//Demo:new Date().format("yyyy-MM-dd hh:mm:ss.SSS") Date.prototype.format = function (form ...
- Java基础-日期格式化DateFormat类简介
Java基础-日期格式化DateFormat类简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.DateFormat类概述 DateFormat 是日期/时间格式化子类的抽象 ...
- Java SE基础部分——常用类库之SimpleDateFormat(日期格式化)
取得当前日期,并按照不同日期格式化输入.代码如下: // 20160618 SimpleDateFomat类的使用 日期格式化 练习 package MyPackage; //自己定义的包 impor ...
- Java日期时间API系列42-----一种高效的中文日期格式化和解析方法
中文日期(2021年09月11日 和 二〇二一年九月十一日 )在生活中经常用到,2021年09月11日很好处理直接使用模板:yyyy年MM月dd日:二〇二一年九月十一日比较不好处理,需要每个数字进行转 ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Java-Runoob-高级教程-实例-时间处理:01. Java 实例 - 格式化时间(SimpleDateFormat)
ylbtech-Java-Runoob-高级教程-实例-时间处理:01. Java 实例 - 格式化时间(SimpleDateFormat) 1.返回顶部 1. Java 实例 - 格式化时间(Sim ...
随机推荐
- python——3种字符串反转方法
在学习过程中,总结了3种字符串反转方法: 1.切片法 这种方法最为简便 str='abad' print(str[::-1]) · 用切片操作,将字符串以步长-1重新整理,即 'str[-1],str ...
- num12---组合模式
案例描述: 学校下有多个学院,每个学院下有多个专业系. 把学校.院系.专业 全都看成某个组织类型,含有添加add方法,删除remove方法,显示print方法. 如果有新增的院系.专业,新增加对应的 ...
- Python Special Methods - 特殊方法
特殊方法 特殊方法的存在是为了给 Python 解释器调用的,通常自己并不需要直接调用它们.也就是说不应该使用 my_object.__len__() 这种写法,而应该使用 len(my_object ...
- Linux Firewalld用法及案例
Firewalld概述 动态防火墙管理工具 定义区域与接口安全等级 运行时和永久配置项分离 两层结构 核心层 处理配置和后端,如iptables.ip6tables.ebtables.ipset和模块 ...
- CVE-2020-0668-Windows服务跟踪中的普通特权升级错误
CVE-2020-0668-Windows服务跟踪中的普通特权升级错误 在这里中,我将讨论在Windows Service跟踪中发现的任意文件移动漏洞.从我的测试来看,它影响了从Vista到10的所有 ...
- oracle11g-R2数据库的逻辑备份(数据泵的导入导出)
一.环境: server1迁移到server2 server1: 服务器号:201 系统:Windows server 2008 R2 x64 IP地址:192.168.2.201 oracle数据库 ...
- linux传输文件-sftp
SFTP sftp登陆远程服务器 sftp username@ip 例如:sftp mqadmin@10.10.1.150 然后输入password即可 put:上传文件 例如:put iosta ...
- HTML连载71-翻转菜单练习
一.翻转菜单练习 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- SparkShuffle机制
在早期版本的Spark中,shuffle过程没有磁盘读写操作,是纯内存操作,后来发现效率较低,且极易引发OOME,较新版本的Shuffle操作都加入了磁盘读写进行了改进. 1.未经优化的HashShu ...
- 2020年如何成为一个高级AVA架构师(50W~100W年薪)
2020年如何成为一个高级AVA架构师(50W~100W年薪)