java工具包一:日期处理

作者:NiceCui

  • 本文谢绝转载,如需转载需征得作者本人同意,谢谢。
  • 本文链接:http://www.cnblogs.com/NiceCui/p/7846812.html
  • 邮箱:moyi@moyibolg.com
  • 日期:2017-11-16

平时写代码有时会常用到一些处理日期的逻辑,自己写了一个工具包,方便每次处理

  1 import java.text.ParseException;
  2 
  3 import java.text.SimpleDateFormat;
  4 import java.util.Date;
  5 
  6 import org.junit.Test;
  7 
  8 /**
  9  * 日期处理工具包
 10  * @author NiceCui
 11  * @date 2017-11-14
 12  *
 13  */
 14 public class DateTool {
 15     
 16     /**
 17      * 讲字符串格式的日期 转换成 自定义的 日期格式 返回Date类型
 18      * 
 19      * @param String
 20      *            date
 21      * @param String
 22      *            format
 23      * @return Date
 24      */
 25     public static Date getDate(String date, String format) {
 26         if (date == null)
 27             return null;
 28         java.text.DateFormat formatdatetime = new java.text.SimpleDateFormat(format);
 29         try {
 30             return formatdatetime.parse(date);
 31         } catch (ParseException e) {
 32             e.printStackTrace();
 33         }
 34         return null;
 35     }
 36 
 37     /**
 38      * 讲Date类型的日期 转换成 String 字符串形式的
 39      * 
 40      * @param date
 41      * @return String
 42      */
 43     public static String getTimeStr(Date date) {
 44         if (date == null)
 45             return null;
 46         java.text.DateFormat formatdatetime = new java.text.SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
 47         return formatdatetime.format(date);
 48     }
 49 
 50     /**
 51      * 比较两个 Date类型的 日期 是否是一样的
 52      * 
 53      * @param Date
 54      *            day1
 55      * @param Date
 56      *            day2
 57      * @return boolean
 58      */
 59     public static boolean isSameDay(Date day1, Date day2) {
 60         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
 61         String ds1 = dateFormat.format(day1);
 62         String ds2 = dateFormat.format(day2);
 63         if (ds1.equals(ds2)) {
 64             return true;
 65         } else {
 66             return false;
 67         }
 68     }
 69 
 70     /**
 71      * 返回开始日期 和 结束日期直接间隔的天数 返回的int类型 单位是 天
 72      * 
 73      * @param Date
 74      *            start
 75      * @param Date
 76      *            end
 77      * @return int
 78      */
 79     public static int getDays(Date start, Date end) {
 80         Date normStart = DateTool.getDateBegin(start);
 81         Date normEnd = DateTool.getDateBegin(end);
 82         int days = (int) ((normEnd.getTime() - normStart.getTime()) / (1000L * 24 * 3600));
 83 
 84         return days;
 85     }
 86 
 87     /**
 88      * 获得一天的第1s
 89      * 
 90      * @param date
 91      * @return
 92      */
 93     public static Date getDateBegin(Date date) {
 94         Date dateBegin = DateTool.getDate(DateTool.getDateStr(date), "yyyy-MM-dd");
 95         return dateBegin;
 96     }
 97     public static String getDateStr(Date date) {
 98         if(date==null) 
 99         return null;
100         java.text.DateFormat formatdatetime = new java.text.SimpleDateFormat("yyyy-MM-dd");
101         return formatdatetime.format(date);
102     }
103     public static String getDateStr(Date date, String format) {
104         if(date==null) return null;
105         java.text.DateFormat formatdatetime = new java.text.SimpleDateFormat(format);
106         return formatdatetime.format(date);
107     }
108 
109     /**
110      * 获得一天的最后1s
111      * 
112      * @param date
113      * @return
114      */
115     public static Date getDateEnd(Date date) {
116         Date endDate = DateTool.getDate(DateTool.getDateStr(new Date()) + " 23:59:59", "yyyy-MM-dd HH:mm:ss");
117         return endDate;
118     }
119 
120     /**
121      * 讲字符串形式的日期 返回 固定格式 年月日形式的Date形式的 日期
122      * 
123      * @param String
124      *            datestr
125      * @return Date
126      */
127     public static Date getDateStr(String datestr) {
128         java.text.DateFormat formatdatetime = new java.text.SimpleDateFormat("yyyy-MM-dd");
129         try {
130             return formatdatetime.parse(datestr);
131         } catch (ParseException e) {
132             e.printStackTrace();
133             return null;
134         }
135     }
136 
137     /**
138      * 返回 String 类型的 年
139      * 
140      * @param date
141      * @return
142      */
143     public static String getYearStr(Date date) {
144         java.text.DateFormat formatdatetime = new java.text.SimpleDateFormat("yyyy");
145         return formatdatetime.format(date);
146     }
147 
148     /**
149      * 返回 int 类型 的年
150      * 
151      * @param date
152      * @return
153      */
154     public static int getYear(Date date) {
155         java.text.DateFormat formatdatetime = new java.text.SimpleDateFormat("yyyy");
156         return Integer.parseInt(formatdatetime.format(date));
157     }
158 
159     /**
160      * 返回int类型的月
161      * 
162      * @param date
163      * @return
164      */
165     public static int getMonth(Date date) {
166         java.text.DateFormat formatdatetime = new java.text.SimpleDateFormat("MM");
167         return Integer.parseInt(formatdatetime.format(date));
168     }
169 
170     /**
171      * "Tue May 17 10:26:26 CST 2011 由date.toString()得到 像这样的日期如何格式化?": String dstr =
172      * "Tue May 17 10:26:26 CST 2011"; SimpleDateFormat formatter = new
173      * SimpleDateFormat("EEEE MMM dd HH:mm:ss Z yyyy"); Date d =
174      * formatter.parse(dstr);
175      * 
176      * @return
177      */
178     public static Date parseDateStr(String dstr) {
179         Date d = null;
180         SimpleDateFormat formatter = new SimpleDateFormat("EEEE MMM dd HH:mm:ss Z yyyy");
181         try {
182             d = formatter.parse(dstr);
183         } catch (ParseException e) {
184             formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
185             try {
186                 d = formatter.parse(dstr);
187             } catch (Exception e2) {
188                 // TODO: handle exception
189             }
190         }
191         return d;
192     }
193     
194     @Test
195     public void test() {
196 
197         String startTime = "2017-11-16";
198         // Date time = Common.getDate(startTime+" 00:00:00","yyyy-MM-dd HH:mm:ss");
199         // SimpleDateFormat fomat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
200         // System.out.println(fomat.format(time));
201 
202         // Date date = new Date();
203         // Date date1 = new Date();
204         // System.out.println(isSameDay(date,date1));
205 
206         System.out.println(parseDateStr(startTime));
207     }
208 
209 }
原文地址:https://www.cnblogs.com/NiceCui/p/7846812.html