博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java基础篇 -- 常用的日期加减和日期格式化工具类
阅读量:5757 次
发布时间:2019-06-18

本文共 6401 字,大约阅读时间需要 21 分钟。

  平时我们遇到日期的加减,感觉是相当麻烦的,以下是常用的日志加减的方法,包括日的加减、月的加减等,也包括了一些常用的日期格式化,这样在我们以后碰到日期加减的时候会省去很多麻烦,欢迎大神指正和吐槽:

1   package bp.util;  2   3 import java.text.ParseException;  4 import java.text.SimpleDateFormat;  5 import java.util.Calendar;  6 import java.util.Date;  7   8 public final class DateUtils  9 { 10     /** 11      * 英文简写(默认)如:2010-12-01 12      */ 13     public static String FORMAT_SHORT = "yyyy-MM-dd"; 14     /** 15      * 英文简写(默认)如:2010-12-01 16      */ 17     public static String FORMAT_DIY = "yyyy/MM/dd"; 18       19     /** 20      * 英文全称  如:2010-12-01 23:15:06 21      */ 22     public static String FORMAT_LONG = "yyyy-MM-dd HH:mm:ss"; 23       24     /** 25      * 精确到毫秒的完整时间    如:yyyy-MM-dd HH:mm:ss.S 26      */ 27     public static String FORMAT_FULL = "yyyy-MM-dd HH:mm:ss.S"; 28       29     /** 30      * 中文简写  如:2010年12月01日 31      */ 32     public static String FORMAT_SHORT_CN = "yyyy年MM月dd"; 33       34     /** 35      * 中文全称  如:2010年12月01日  23时15分06秒 36      */ 37     public static String FORMAT_LONG_CN = "yyyy年MM月dd日  HH时mm分ss秒"; 38       39     /** 40      * 精确到毫秒的完整中文时间 41      */ 42     public static String FORMAT_FULL_CN = "yyyy年MM月dd日  HH时mm分ss秒SSS毫秒"; 43   44     /** 45      * 获得默认的 date pattern 46      */ 47     public static String getDatePattern() { 48         return FORMAT_LONG; 49     } 50     /** 51      * 获得默认的 date 52      */ 53     public static String getDatePatt() { 54         return FORMAT_DIY; 55     } 56     public static String getDateShot() { 57         return FORMAT_SHORT; 58     } 59     /** 60      * 根据预设格式返回当前日期 61      * @return 62      */ 63     public static String getNow() { 64         return format(new Date()); 65     } 66       67     public static Date getDate(){ 68         return new Date(); 69     } 70     /** 71      * 根据用户格式返回当前日期 72      * @param format 73      * @return 74      */ 75     public static String getNow(String format) { 76         return format(new Date(), format); 77     } 78   79       80     /** 81      * 使用预设格式格式化日期 82      * @param date 83      * @return 84      */ 85     public static String format(Date date) { 86         return format(date, getDatePattern()); 87     } 88     /** 89      * 使用预设格式格式化日期 90      * @param date 91      * @return 92      */ 93     public static String format1(Date date) { 94         return format(date, getDatePatt()); 95     } 96      97     public static String format2(Date date) { 98             return format(date, getDateShot()); 99         }100     /**101      * 使用用户格式格式化日期102      * @param date 日期103      * @param pattern 日期格式104      * @return105      */106     public static String format(Date date, String pattern) {107         String returnValue = "";108         if (date != null) {109             SimpleDateFormat df = new SimpleDateFormat(pattern);110             returnValue = df.format(date);111         }112         return (returnValue);113     }114  115     /**116      * 使用预设格式提取字符串日期117      * @param strDate 日期字符串118      * @return119      */120     public static Date parse(String strDate) {121         return parse(strDate, getDatePattern());122     }123  124     public static Date parseShot(String strDate) {125             return parse(strDate, getDateShot());126     }127     128     /**129      * 使用用户格式提取字符串日期130      * @param strDate 日期字符串131      * @param pattern 日期格式132      * @return133      */134     public static Date parse(String strDate, String pattern) {135         SimpleDateFormat df = new SimpleDateFormat(pattern);136         try {137             return df.parse(strDate);138         } catch (ParseException e) {139             e.printStackTrace();140             return null;141         }142     }143  144     /**145      * 在日期上增加数个整月146      * @param date 日期147      * @param n 要增加的月数148      * @return149      */150     public static Date addMonth(Date date, int n) {151         Calendar cal = Calendar.getInstance();152         cal.setTime(date);153         cal.add(Calendar.MONTH, n);154         return cal.getTime();155     }156  157     /**158      * 在日期上增加天数159      * @param date 日期160      * @param n 要增加的天数161      * @return162      */163     public static Date addDay(Date date, int n) {164         Calendar cal = Calendar.getInstance();165         cal.setTime(date);166         cal.add(Calendar.DATE, n);167         return cal.getTime();168     }169  170     /**171      * 获取时间戳172      */173     public static String getTimeString() {174         SimpleDateFormat df = new SimpleDateFormat(FORMAT_FULL);175         Calendar calendar = Calendar.getInstance();176         return df.format(calendar.getTime());177     }178  179     /**180      * 获取日期年份181      * @param date 日期182      * @return183      */184     public static String getYear(Date date) {185         return format(date).substring(0, 4);186     }187      188     /**189      * 按默认格式的字符串距离今天的天数190      * @param date 日期字符串191      * @return192      */193     public static int countDays (String date) {194         long t = Calendar.getInstance().getTime().getTime();195         Calendar c = Calendar.getInstance();196         c.setTime(parse(date));197         long t1 = c.getTime().getTime();198         return (int)(t/1000 - t1/1000)/3600/24;199     }200      201     /**202      * 按用户格式字符串距离今天的天数203      * @param date 日期字符串204      * @param format 日期格式205      * @return206      */207     public static int countDays (String date, String format) {208         long t = Calendar.getInstance().getTime().getTime();209         Calendar c = Calendar.getInstance();210         c.setTime(parse(date, format));211         long t1 = c.getTime().getTime();212         return (int)(t/1000 - t1/1000)/3600/24;213     }214     215     /**216      * 217     * @Title: getBackTime 218     * @Description: TODO(这里用一句话描述这个方法的作用) 219     * @param @param timestr220     * @param @return    设定文件 221     * @return Date    返回类型 222     * @throws223      */224     public static Date getBackTime(String timestr) {225         Date curTime = new Date();226         Date startTime = DateUtils.addMonth(curTime, -12);227         if (timestr.equals("ONEYEAE")) {228         } else if (timestr.equals("TWOYEAR")) {229             startTime = DateUtils.addMonth(curTime, -12 * 2);230         } else if (timestr.equals("ALL")) {231             startTime = null;232         }233         return startTime;234     }  235 }

 

转载于:https://www.cnblogs.com/bestxyl/p/7383205.html

你可能感兴趣的文章
你不知道的CSS
查看>>
node学习之路(二)—— Node.js 连接 MongoDB
查看>>
Goroutine是如何工作的?
查看>>
学习数据结构与算法之字典和散列表
查看>>
《深入理解java虚拟机》学习笔记系列——垃圾收集器&内存分配策略
查看>>
用grunt搭建自动化的web前端开发环境-完整教程
查看>>
研究人员发现:基于文本的AI模型容易受到改述攻击
查看>>
京东AI研究院何晓冬:将先进的技术和模型落地到产业
查看>>
TriggerMesh开源用于多云环境的Knative Event Sources
查看>>
对Julia社区不熟悉?创始人来告诉你
查看>>
图数据库并非要取代区块链,而是让区块链如虎添翼
查看>>
GitLab联合DigitalOcean为开源社区提供GitLab CI免费托管
查看>>
通过XAML Islands使Windows桌面应用程序现代化
查看>>
社区OpenJDK代码构建平台投入使用
查看>>
区块链现状:从谨慎和批判性思维看待它(第二部分)
查看>>
Netflix 混沌工程手册 Part 3:实践方法
查看>>
苹果公司透露Siri新发音引擎的内部原理
查看>>
GCM 3.0采用类似方式向Android、iOS和Chrome发送消息
查看>>
如何成为一家敏捷银行
查看>>
MongoDB主动撤回SSPL的开源许可申请
查看>>