相信大家在写代码的过程中,会经常遇到日期和字符串之间的格式转换和求日期的需求。

因此我今天整理了一下普遍常用的一些方法,希望可以帮助大家。如果有不对的地方希望指正,有遗漏也请留言提出。

package slpcb;import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;/***
* 项目名称:testClass
* 类名称:DateUtils
* 类描述:
* 创建人:Jie.xiaojun
* 创建时间:2017-12-4 下午04:20:02*/
public class DateUtils {/*** 字符串格式:yyyy-MM-dd HH:mm:ss.sss*/public static final String formatter_yyyyMMddHHmmsssss = "yyyy-MM-dd HH:mm:ss.sss";/*** 字符串格式:yyyy-MM-dd HH:mm:ss*/public static final String formatter_yyyyMMddHHmmss = "yyyy-MM-dd HH:mm:ss";/*** 字符串格式:yyyy-MM-dd HH:mm*/public static final String formatter_yyyyMMddHHmm = "yyyy-MM-dd HH:mm";/*** 字符串格式:yyyy-MM-dd*/public static final String formatter_yyyyMMdd = "yyyy-MM-dd";/*** 字符串格式:yyyy-MM*/public static final String formatter_yyyyMM = "yyyy-MM";/*** 字符串格式:yyyy*/public static final String formatter_yyyy = "yyyy";/*** 字符串格式:MM-dd*/public static final String formatter_MMdd = "MM-dd";/*** 字符串格式:HH:mm:ss*/public static final String formatter_HHmmss = "HH:mm:ss";/*** 字符串格式:HH:mm*/public static final String formatter_HHmm = "HH:mm";/*** 字符串格式:返回星期X(一、二、三、四、五、六、日)*/public static final String formatter_EEEE = "EEEE";public static void main(String args[]){
//      System.out.println(dateToString(new Date(), formatter_yyyyMMddHHmmss));
//      System.out.println(stringtoDate("2017-10-01 12:00", formatter_yyyyMMddHHmm));
//      System.out.println(getCurrentDate(formatter_yyyyMMddHHmmss));
//      System.out.println(getFirstDayOfMonth(new Date(), formatter_yyyyMMddHHmmss, 0));
//      System.out.println(getFirstDayOfMonth(new Date(), formatter_yyyyMMddHHmmss, -12));
//      System.out.println(getFirstDayOfMonth(new Date(), formatter_yyyyMMddHHmmss, 1));
//      System.out.println(getLastDayOfMonth(new Date(), formatter_yyyyMMddHHmmss, 0));
//      System.out.println(getLastDayOfMonth(new Date(), formatter_yyyyMMddHHmmss, -12));
//      System.out.println(getLastDayOfMonth(new Date(), formatter_yyyyMMddHHmmss, 1));
//      System.out.println(getLastDayOfMonth(new Date(), formatter_yyyyMMddHHmmss,2));
//      System.out.println(getHourByDate(date));
//      System.out.println(getDayByDate(date));
//      System.out.println(getMonthByDate(date));
//      System.out.println(getYearByDate(date));
//      System.out.println(daysBetween("2017-11-06 23:59:59","2017-11-07 00:00:00",formatter_yyyyMMdd));
//      System.out.println(minutesBetweenFloat("2017-11-07 23:57:59","2017-11-07 23:58:00",formatter_yyyyMMddHHmmss));
//      System.out.println(minutesBetweenInt("2017-11-07 23:57:00","2017-11-07 23:58:00",formatter_yyyyMMddHHmmss));
//      System.out.println(hoursBetween("2017-11-07 22:58:00", "2017-11-07 23:57:00", formatter_yyyyMMddHHmmss));
//      System.out.println(getNewDateStr("2017-10-31 01:00", formatter_yyyyMMddHHmm, 500, "day"));}/*** @Description: 将日期转换为指定格式的字符串* @param @param date* @param @param format* @param @return   * @return String  * @author Jie.xiaojun* @date 2017-12-4  下午03:58:17*/public static String dateToString(java.util.Date date, String format){String result = "";SimpleDateFormat formater = new SimpleDateFormat(format);try {result = formater.format(date);} catch (Exception e) {}return result;}/*** * @Description: 将指定格式的字符串转换为日期* @param dateStr* @param format* @return java.util.Date  * @author Jie.xiaojun* @date 2017-12-4  下午04:18:06*/public static java.util.Date stringtoDate(String dateStr, String format) {SimpleDateFormat formater = new SimpleDateFormat(format);try {formater.setLenient(false);return formater.parse(dateStr);} catch (Exception e) {return null;}}/*** * @Description: 获取当前时间的指定格式的字符串* @param format* @return String  * @author Jie.xiaojun* @date 2017-12-4  下午05:22:04*/public static String getCurrentDate(String format) {return dateToString(new Date(), format);}/*** * @Description: 获取给定时间第几个月第一天的指定格式字符串* @param date* @param format* @param month* @return String  * @author Jie.xiaojun* @date 2017-12-5  上午08:18:27*/public static String getFirstDayOfMonth(Date date, String format, int month) {Calendar cal = Calendar.getInstance();cal.setTime(date);cal.add(Calendar.MONTH, month);cal.set(Calendar.DATE, 1);cal.set(Calendar.HOUR_OF_DAY, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);return dateToString(cal.getTime(), format);}  /*** * @Description: 获取给定时间第几个月最后一天的指定格式字符串* @param date* @param format* @return String  * @author Jie.xiaojun* @date 2017-12-5  上午08:29:48*/public static String getLastDayOfMonth(Date date, String format,int month) {Calendar cal = Calendar.getInstance();cal.setTime(date);cal.set(Calendar.DATE, 1);cal.add(Calendar.MONTH, 1);cal.add(Calendar.DATE, -1);cal.add(Calendar.MONTH, month);cal.set(Calendar.HOUR_OF_DAY, 23);cal.set(Calendar.MINUTE, 59);cal.set(Calendar.SECOND, 59);return dateToString(cal.getTime(), format);}/*** * @Description: 求指定日期的小时数(0到23)* @param date* @return int  * @author Jie.xiaojun* @date 2017-12-5  上午08:51:03*/public static int getHourByDate(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);return calendar.get(Calendar.HOUR_OF_DAY);}/*** * @Description: 求指定日期是一个月中第几天(1到31)* @param date* @return int  * @author Jie.xiaojun* @date 2017-12-5  上午08:46:32*/public static int getDayByDate(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);return calendar.get(Calendar.DATE);}/*** * @Description: 求指定日期是一年中第几月(1到12)* @param date* @return int  * @author Jie.xiaojun* @date 2017-12-5  上午08:48:39*/public static int getMonthByDate(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);return calendar.get(Calendar.MONTH) + 1;}/*** * @Description: 求指定日期的年* @param date* @return int  * @author Jie.xiaojun* @date 2017-12-5  上午08:49:50*/public static int getYearByDate(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);return calendar.get(Calendar.YEAR);}/*** * @Description: 返回两个指定字符串格式的日期相差天数* @param startDate* @param endDate* @param format* @return int  * @author Jie.xiaojun* @date 2017-12-5  上午09:30:58*/public static int daysBetween(String startDate,String endDate,String format){   Calendar cal = Calendar.getInstance();    cal.setTime(stringtoDate(startDate, format));    long time1 = cal.getTimeInMillis();                 cal.setTime(stringtoDate(endDate, format));long time2 = cal.getTimeInMillis();         long between_days=Math.abs((time2-time1)/(1000*3600*24));     return Integer.parseInt(String.valueOf(between_days));     }  /*** * @Description: 获取两个时间之间的小时差(时间格式必须是yyyy-MM-dd HH yyyy-MM-dd HH:mm yyyy-MM-dd HH:mm:ss yyyy-MM-dd HH:mm:ss.sss)* @param startDate* @param endDate* @param format* @return float  * @author Jie.xiaojun* @date 2017-12-5  上午10:06:35*/public static float hoursBetween(String startDate,String endDate,String format){   Calendar cal = Calendar.getInstance();    cal.setTime(stringtoDate(startDate, format));    long time1 = cal.getTimeInMillis();                 cal.setTime(stringtoDate(endDate, format));long time2 = cal.getTimeInMillis();         float between_hours=(float) ((time2-time1)/(1000*3600.0));     return between_hours;   }/*** * @Description: 获取两个时间之间的分钟差(时间格式必须是yyyy-MM-dd HH:mm yyyy-MM-dd HH:mm:ss yyyy-MM-dd HH:mm:ss.sss)* @param startDate* @param endDate* @param format* @return float  * @author Jie.xiaojun* @date 2017-12-5  上午10:04:11*/public static float minutesBetweenFloat(String startDate,String endDate,String format){   Calendar cal = Calendar.getInstance();    cal.setTime(stringtoDate(startDate, format));    long time1 = cal.getTimeInMillis();                 cal.setTime(stringtoDate(endDate, format));long time2 = cal.getTimeInMillis();       float between_minutes=(float) ((time2-time1)/(1000*60.0));     return between_minutes;   }  /*** * @Description: 获取两个时间之间的分钟差(时间格式必须是yyyy-MM-dd HH:mm yyyy-MM-dd HH:mm:ss yyyy-MM-dd HH:mm:ss.sss)* @param startDate* @param endDate* @param format* @return int  * @author Jie.xiaojun* @date 2017-12-5  上午10:02:59*/public static int minutesBetweenInt(String startDate,String endDate,String format){   Calendar cal = Calendar.getInstance();    cal.setTime(stringtoDate(startDate, format));    long time1 = cal.getTimeInMillis();                 cal.setTime(stringtoDate(endDate, format));long time2 = cal.getTimeInMillis();       long between_minutes=Math.abs((time2-time1)/(1000*60));      return Integer.parseInt(String.valueOf(between_minutes));}  /*** * @Description: 求指定字符串格式的天数或月份加减* @param dateStr * @param format  常用格式:yyyy-MM-dd HH:mm:ss&&yyyy-MM-dd* @param counts* @param type  month or day* @return String  * @author Jie.xiaojun* @date 2017-12-5  上午10:14:25*/public static String getNewDateStr(String dateStr,String format,int counts,String type){   Calendar cal = Calendar.getInstance();    cal.setTime(stringtoDate(dateStr, format)); if(type!=null&&type.equals("day")){cal.add(Calendar.DAY_OF_YEAR, counts);}if(type!=null&&type.equals("month")){cal.add(Calendar.MONTH, counts);}String  newDateStr= dateToString(cal.getTime(), format);return  newDateStr;} /*** * @Description: 比较字符串是否和格式完全相同* @param str* @param format* @return boolean  * @author Jie.xiaojun* @date 2017-12-4  下午05:07:09*/public static boolean isSameFormat(String str,String format) { boolean convertSuccess=true; SimpleDateFormat formater = new SimpleDateFormat(format); try {              formater.setLenient(false); try {formater.parse(str);} catch (java.text.ParseException e) {convertSuccess=false;} } catch (ParseException e) {convertSuccess=false;}return convertSuccess;}/*** * @Description: 比较字符串是否和格式类似相同* @param str* @param format* @return boolean  * @author Jie.xiaojun* @date 2017-12-4  下午05:07:09*/public static boolean isLikeFormat(String str,String format) { boolean convertSuccess=true; SimpleDateFormat formater = new SimpleDateFormat(format); try {               formater.setLenient(true); try {formater.parse(str);} catch (java.text.ParseException e) {convertSuccess=false;} } catch (ParseException e) {convertSuccess=false;}return convertSuccess;}}

JAVA Date 工具类 常用相关推荐

  1. java Date工具类

    /** * * <p> * Title: DateUtil.java * </p> * <p> * Description: 一些日期的工具方法,时间格式全部为二十 ...

  2. date工具类 DateUtils.java

    简介 Date日期类型的工具类. api 日期格式化 format(Date date): 日期格式化 format(Date date, String pattern): 计算距离现在多久,非精确  ...

  3. Java转义工具类StringEscapeUtils的学习笔记

    Java转义工具类StringEscapeUtils的学习笔记 前言 ​ 在java.commons.lang3 的包中有许多方便好用的工具类,类似于处理字符串的StringUtils,处理日期的Da ...

  4. java日期工具类DateUtil

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. DateUtil类 [java] view plain copy package com.util; ...

  5. java 系统工具类 查询内存 CPU 系统基本信息 SysInfoUtils

    java 系统工具类 查询内存 CPU 系统基本信息 SysInfoUtils maven依赖 <dependency><groupId>com.github.oshi< ...

  6. Java正则工具类从地址中提取省市区

    Java正则工具类从地址中提取省市区 最近有个需求,从一串地址中提取出省市区,然后开始寻找解决方案,最终通过网上一些正则,再加上自己改动的,貌似弄成一个比较匹配的工具类,其中代码如下,有需要的可以参考 ...

  7. Java时间工具类(把日期时间转换成xx秒前、xx分钟前、xx小时前...)

    Java时间工具类(把日期时间转换成xx秒前.xx分钟前.xx小时前...) package com.liuzy.javaopen.entity; import java.text.ParseExce ...

  8. Java生成图片工具类

    Java生成图片工具类 最初版本(仅提供思路,生成时间长,根据自己的需要自己优化) package com.xhpc.charging.station.utils.img;import java.aw ...

  9. Java 缓存工具类 Cache

    Java 缓存工具类 Cache 工具类定义 工具类定义 package com.demo.utils;import org.springframework.util.StringUtils;impo ...

最新文章

  1. windbg 调试技巧
  2. Docker容器的导出和导入
  3. 再见,Navicat!这个Pycharm的兄弟真香!
  4. 正则表达式如何匹配正反斜杠
  5. Hibernate基本概念
  6. jpa 托管_Spring Boot-不是托管类型
  7. LeetCode 350. 两个数组的交集 II(哈希)
  8. VBA IsNull 应用 - 捕获错误并查找未填充的值
  9. vue打卡日历_Vue日历
  10. 移动端与PC端页面布局区别
  11. Tomcat和Weblogic的区别
  12. matlab线性规划的最优化,【OR】Matlab求解最优化问题(1) 线性规划
  13. postman不跨域 本地开发跨域_为什么postman调接口不会跨域而浏览器会
  14. 2022年全球及中国舞台灯光系统行业头部企业市场占有率及排名调研报告
  15. 机器人图形变变变_幼儿园全景数学特色课程
  16. 如何将.keystore 文件转成.key文件
  17. 运作团购渠道,如何寻找团购客户(四)?
  18. 获取线的中间点(postgis)
  19. Docker迁移备份武林秘籍
  20. 计算机华科与电子科技大学哪个好,华中科技大学、电子科技大学、中国科学技术大学,哪所实力最强?...

热门文章

  1. 智能手表的机遇与挑战
  2. 学会这些快准狠的Word技巧,你也能成为Word高手
  3. 图形界面 I: 图形界面的动画 (第三章)
  4. 简单的邮箱格式校验方式
  5. 关于Android终端机串口的理解
  6. 这份春招攻略,希望大家可以收藏!
  7. 2022.5.4.学习笔记数据类型
  8. Elasticsearch 文档内容检索插件 ingest attachment 安装
  9. 今日头条——青龙羊毛
  10. java 设计模式之: 建造模式(Builder)