首页 > 代码库 > 自写Date工具类

自写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 format101      * @param long timestamp102      * @author panjianghong 2016-8-29103      * */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-29116      * */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 date128      * @author panjianghong 2016-8-29129      * */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-29142      * */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 date157      * @author panjianghong 2016-8-29158      * */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 date176      * @author panjianghong 2016-8-29177      * */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 date188      * @author panjianghong 2016-8-29189      * */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:ss207      * @param Date date208      * @return String209      * @author panjianghong 2016-8-29210      */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 date238      * @param String format239      * @return String240      * @author panjianghong 2016-8-29241      */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工具类