自写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工具类的主要内容,如果未能解决你的问题,请参考以下文章
elasticsearch代码片段,及工具类SearchEsUtil.java