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 ...
随机推荐
- Go语言实现:【剑指offer】最小的K个数
该题目来源于牛客网<剑指offer>专题. 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. Go语言实现: fu ...
- 【LaTeX】记录一下LaTeX的安装和使用
由于排版论文的需要,了解了一些LaTeX的相关内容,下面简单记录关于LaTeX的安装和使用 维基百科: LaTeX(/ˈlɑːtɛx/,常被读作/ˈlɑːtɛk/或/ˈleɪtɛk/),文字形式写作L ...
- DOM - Document Object Model
Document Object Model
- [redis读书笔记] 第一部分 数据结构与对象 对象特性
一 类型检查和多态 类型检查,即有的命令是只针对特定类型的,如果类型不对,就会报错,此处的类型,是指的键类型,即robj.type.下面为有类型检查的命令: 对于某一种类型,redis下底层的实 ...
- [1天搞懂深度学习] 读书笔记 lecture I:Introduction of deep learning
- 通常机器学习,目的是,找到一个函数,针对任何输入:语音,图片,文字,都能够自动输出正确的结果. - 而我们可以弄一个函数集合,这个集合针对同一个猫的图片的输入,可能有多种输出,比如猫,狗,猴子等, ...
- VFP获取 SQL Server 的数据表、触发器、存储过程、视图等脚本
本文代码转载自红雨先生 *-----------------------------------------------* SqlServer 相关函数*----------------------- ...
- leetcode-简单-栈-逆波兰表达式
根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话 ...
- Linux部署.NetCore站点 使用Supervisor进行托管部署
前言 之前终于在Linux上部署好了.NetCore站点,但是这个站点非常“脆弱”.当我的ssh连接关闭或者我想在当前连接执行其他命令时候就必须关闭dotnet站点的执行程序.这显然不是我想要达到的效 ...
- 升级了NinjaLoveFish Excel量化表格
为了方便查看均价和止盈值,新建了两列 这样做的好处就是,针对一个股票,可以实现不同的多个网格布局,然后分别实现各自的盈利设定. 例如这是网格1 那么同时也可以存在网格2 就可以实现多个网格布局到一个股 ...
- python——异常(1),捕获特定异常
"""1.捕获指定异常,异常类型有多种2.若尝试执行的代码异常类型与捕获的异常类型不同则报错3.try下方一般只放一行代码,若有多行可能异常代码,则捕获一个异常类型后函数 ...