自写Date工具类

Posted 凭栏独倚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自写Date工具类相关的知识,希望对你有一定的参考价值。

以前写项目的时候总是在使用到了时间的转换的时候才在工具类中添加一个方法,这样很容易导致代码冗余以及转换的方法注释不清晰导致每次使用都要重新看一遍工具类。因此整理出经常使用的一些转换,用作记录,以便以后使用。

此工具类主要用于获取时间戳以及各种时间类型之间的转换。

  1 package com.test;
  2 
  3 import java.text.ParseException;
  4 import java.text.SimpleDateFormat;
  5 import java.util.Calendar;
  6 import java.util.Date;
  7 
  8 import org.apache.commons.logging.Log;
  9 import org.apache.commons.logging.LogFactory;
 10 
 11 
 12 public class DateUtil {
 13     
 14     private static final Log _log = LogFactory.getLog(DateUtil.class);
 15     
 16     
 17     public static void main(String[] args) {
 18         
 19         //System.out.println(getTimeStamp());
 20         
 21         //System.out.println(getDate(24,60,60,000));
 22         
 23         System.out.println(getTimeFormat("2016-05-23", "yyyy-MM-dd", "yyyyMMdd"));
 24         
 25     }
 26     
 27     
 28     
 29     
 30     /**
 31      * 获取自定义格式的时间字符串 
 32      * 
 33      * @param String format 例:"yyyy-MM-dd hh:mm:ss:SSS EEE"
 34      * @author panjianghong 2016-8-29
 35      * */
 36     public static String getTimeFormat(String format){
 37         
 38         Date date = new Date();
 39         SimpleDateFormat sdf = new SimpleDateFormat(format);
 40         String time = sdf.format(date);
 41         
 42         return time;
 43     }
 44     
 45     
 46     /**
 47      * 获取自定义格式的时间字符串 
 48      * 
 49      * @param String format 例:"yyyy-MM-dd hh:mm:ss:SSS EEE"
 50      * @param Date date
 51      * @author panjianghong 2016-8-29
 52      * */
 53     public static String getTimeFormat(String format,Date date){
 54         
 55         SimpleDateFormat sdf = new SimpleDateFormat(format);
 56         String time = sdf.format(date);
 57         
 58         return time;
 59     }
 60     
 61     /**
 62      * 不同字符串时间格式间的转化 
 63      * 
 64      * @param String String time 例:"20140807"
 65      * @param String format 例:"yyyyMMdd"
 66      * @param String newFormat 例:"yyyy-MM-dd"
 67      * @author panjianghong 2016-8-29
 68      * */
 69     public static String getTimeFormat(String time, String format, String newFormat){
 70         
 71         long timestamp = getTimeStamp(time, format);
 72         
 73         SimpleDateFormat sdf = new SimpleDateFormat(newFormat);
 74         
 75         String timeFormat = sdf.format(getDate(timestamp));
 76         
 77         return timeFormat;
 78     }
 79     
 80     /**
 81      * 根据字符串类型的时间戳获取自定义格式的时间字符串 
 82      * 
 83      * @param String format
 84      * @param String timestamp
 85      * @author panjianghong 2016-8-29
 86      * */
 87     public static String getTimeFormat(String format,String timestamp){
 88         
 89         Date date = getDate(timestamp);
 90         SimpleDateFormat sdf = new SimpleDateFormat(format);
 91         String time = sdf.format(date);
 92         
 93         return time;
 94     }
 95     
 96     
 97     /**
 98      * 根据长整型类型的时间戳获取自定义格式的时间字符串 
 99      * 
100      * @param String format
101      * @param long timestamp
102      * @author panjianghong 2016-8-29
103      * */
104     public static String getTimeFormat(String format,long timestamp){
105         
106         Date date = getDate(timestamp);
107         SimpleDateFormat sdf = new SimpleDateFormat(format);
108         String time = sdf.format(date);
109         
110         return time;
111     }    
112     
113     /**
114      * 获取当前时间的时间戳
115      * @author panjianghong 2016-8-29
116      * */
117     public static long getTimeStamp(){
118         
119         Date date = new Date();
120         long timestamp = date.getTime();
121         
122         return timestamp;
123     }
124     
125     /**
126      * 获取传递时间参数的时间戳
127      * @param  Date date
128      * @author panjianghong 2016-8-29
129      * */
130     public static long getTimeStamp(Date date){
131         
132         long timestamp = date.getTime();
133         
134         return timestamp;
135     }
136     
137     /**
138      * 根据时间字符串和时间格式获取时间戳
139      * @param String String time 例:"20140807"
140      * @param String format 例:"yyyyMMdd"
141      * @author panjianghong 2016-8-29
142      * */
143     public static long getTimeStamp(String time, String format){
144         
145         Date date = getDate(time, format);
146         
147         long timestamp = date.getTime();
148         
149         return timestamp;
150     }
151     
152     
153     /**
154      * 根据字符串形式的时间戳获取当前时间
155      * @param String time 
156      * @return Date date
157      * @author panjianghong 2016-8-29
158      * */
159     public static Date getDate(String timestamp){
160         
161         Date date;
162         try {
163             date = new Date(Long.parseLong(timestamp));
164             return date;
165         } catch (NumberFormatException e) {
166             _log.error("字符串时间戳转换长整型数据失败!");
167         }
168 
169         return null;
170     }    
171     
172     /**
173      * 根据长整型形式的时间戳获取当前时间
174      * @param String time 
175      * @return Date date
176      * @author panjianghong 2016-8-29
177      * */
178     public static Date getDate(long timestamp){
179         Date date = new Date(timestamp);
180         return date;
181     }    
182     
183     /**
184      * 根据时间字符串和时间格式获取时间
185      * @param String time 例:"20140807"
186      * @param String format 例:"yyyyMMdd"
187      * @return Date date
188      * @author panjianghong 2016-8-29
189      * */
190     public static Date getDate(String time, String format){
191         
192         SimpleDateFormat sdf = new SimpleDateFormat(format);
193         try {
194             Date date = sdf.parse(time);
195             return date;
196         } catch (ParseException e) {
197             _log.error("字符串转换时间失败!");
198         }
199         
200         return null;
201     }
202     
203     
204     /**
205      * 获得文字类型的时间 比如:12小时前 33分钟前 10秒前
206      * 大于1天的格式 yyyy-MM-dd HH:mm:ss
207      * @param Date date
208      * @return String
209      * @author panjianghong 2016-8-29
210      */
211     public static String getTimeText(Date date)
212     {
213         long subTime=((new Date().getTime())-date.getTime())/1000;
214         long sub=0;
215         sub=subTime/(24*60*60);
216         if(sub>0)            //大于1天
217         {
218             return getTimeFormat("yyyy-MM-dd HH:mm:ss",date);
219         }
220         sub=subTime%(24*60*60)/(60*60);
221         if(sub>0)
222         {
223             return sub+"小时前"; 
224         }
225         sub=subTime%(24*60*60)%(60*60)/60;
226         if(sub>0)
227         {
228             return sub+"分钟前";
229         }
230         sub=subTime%(24*60*60)%(60*60)%60;
231         return sub+"秒前";
232     }
233     
234     /**
235      * 获得文字类型的时间 比如:12小时前 33分钟前 10秒前
236      * 自定义大于1天的格式
237      * @param Date date
238      * @param String format
239      * @return String
240      * @author panjianghong 2016-8-29
241      */
242     public static String getTimeText(Date date, String format)
243     {
244         long subTime=((new Date().getTime())-date.getTime())/1000;
245         if(subTime < 0){
246             _log.error("输入的日期超过当前时间!");
247             return null;
248         }
249         long sub=0;
250         sub=subTime/(24*60*60);
251         if(sub>0)            //大于1天
252         {
253             return getTimeFormat(format,date);
254         }
255         sub=subTime%(24*60*60)/(60*60);
256         if(sub>0)
257         {
258             return sub+"小时前"; 
259         }
260         sub=subTime%(24*60*60)%(60*60)/60;
261         if(sub>0)
262         {
263             return sub+"分钟前";
264         }
265         sub=subTime%(24*60*60)%(60*60)%60;
266         return sub+"秒前";
267     }
268 }

 

以上是关于自写Date工具类的主要内容,如果未能解决你的问题,请参考以下文章

自写AES加密解密工具类

elasticsearch代码片段,及工具类SearchEsUtil.java

记录自写AFNetWorking封装类

《javaScript100例|03》自写javaScript+CSS轮显效果

自写常用扩展类

solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例