首页 > 代码库 > 自写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工具类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。