博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
StringUtils 时间显示,判断手机号,电子邮件,是否为今日,是否空白串,字符串转整数,对象转整数 等...
阅读量:6485 次
发布时间:2019-06-23

本文共 8417 字,大约阅读时间需要 28 分钟。

1 package com.xiaoyun.org.util;  2   3 import java.io.BufferedReader;  4 import java.io.IOException;  5 import java.io.InputStream;  6 import java.io.InputStreamReader;  7 import java.text.ParseException;  8 import java.text.SimpleDateFormat;  9 import java.util.Calendar; 10 import java.util.Date; 11 import java.util.regex.Pattern; 12  13 /** 14  * 字符串操作工具包 15  *  16  * @author liux (http://my.oschina.net/liux) 17  * @version 1.0 18  * @created 2012-3-21 19  */ 20  21 public class StringUtils { 22     private final static Pattern emailer = Pattern 23             .compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"); 24     private final static Pattern phones = Pattern 25             .compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"); 26  27     // private final static SimpleDateFormat dateFormater = new 28     // SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 29     // private final static SimpleDateFormat dateFormater2 = new 30     // SimpleDateFormat("yyyy-MM-dd"); 31  32     private final static ThreadLocal
dateFormater = new ThreadLocal
() { 33 @Override 34 protected SimpleDateFormat initialValue() { 35 return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 36 } 37 }; 38 39 private final static ThreadLocal
dateFormater2 = new ThreadLocal
() { 40 @Override 41 protected SimpleDateFormat initialValue() { 42 return new SimpleDateFormat("yyyy-MM-dd"); 43 } 44 }; 45 46 /** 47 * 将字符串转位日期类型 48 * 49 * @param sdate 50 * @return 51 */ 52 public static Date toDate(String sdate) { 53 try { 54 return dateFormater.get().parse(sdate); 55 } catch (ParseException e) { 56 return null; 57 } 58 } 59 60 /** 61 * 以友好的方式显示时间 62 * 63 * @param sdate 64 * @return 65 */ 66 public static String friendly_time(String sdate) { 67 Date time = toDate(sdate); 68 if (time == null) { 69 return "Unknown"; 70 } 71 String ftime = ""; 72 Calendar cal = Calendar.getInstance(); 73 74 // 判断是否是同一天 75 String curDate = dateFormater2.get().format(cal.getTime()); 76 String paramDate = dateFormater2.get().format(time); 77 if (curDate.equals(paramDate)) { 78 int hour = (int) ((cal.getTimeInMillis() - time.getTime()) / 3600000); 79 if (hour == 0) 80 ftime = Math.max( 81 (cal.getTimeInMillis() - time.getTime()) / 60000, 1) 82 + "分钟前"; 83 else 84 ftime = hour + "小时前"; 85 return ftime; 86 } 87 88 long lt = time.getTime() / 86400000; 89 long ct = cal.getTimeInMillis() / 86400000; 90 int days = (int) (ct - lt); 91 if (days == 0) { 92 int hour = (int) ((cal.getTimeInMillis() - time.getTime()) / 3600000); 93 if (hour == 0) 94 ftime = Math.max( 95 (cal.getTimeInMillis() - time.getTime()) / 60000, 1) 96 + "分钟前"; 97 else 98 ftime = hour + "小时前"; 99 } else if (days == 1) {100 ftime = "昨天";101 } else if (days == 2) {102 ftime = "前天";103 } else if (days > 2 && days <= 10) {104 ftime = days + "天前";105 } else if (days > 10) {106 ftime = dateFormater2.get().format(time);107 }108 return ftime;109 }110 111 /**112 * 判断给定字符串时间是否为今日113 * 114 * @param sdate115 * @return boolean116 */117 public static boolean isToday(String sdate) {118 boolean b = false;119 Date time = toDate(sdate);120 Date today = new Date();121 if (time != null) {122 String nowDate = dateFormater2.get().format(today);123 String timeDate = dateFormater2.get().format(time);124 if (nowDate.equals(timeDate)) {125 b = true;126 }127 }128 return b;129 }130 131 /**132 * 返回long类型的今天的日期133 * 134 * @return135 */136 public static long getToday() {137 Calendar cal = Calendar.getInstance();138 String curDate = dateFormater2.get().format(cal.getTime());139 curDate = curDate.replace("-", "");140 return Long.parseLong(curDate);141 }142 143 /**144 * 判断给定字符串是否空白串。 空白串是指由空格、制表符、回车符、换行符组成的字符串 若输入字符串为null或空字符串,返回true145 * 146 * @param input147 * @return boolean148 */149 public static boolean isEmpty(String input) {150 if (input == null || "".equals(input))151 return true;152 153 for (int i = 0; i < input.length(); i++) {154 char c = input.charAt(i);155 if (c != ' ' && c != '\t' && c != '\r' && c != '\n') {156 return false;157 }158 }159 return true;160 }161 162 /**163 * 判断是不是一个合法的电子邮件地址164 * 165 * @param email166 * @return167 */168 public static boolean isEmail(String email) {169 if (email == null || email.trim().length() == 0)170 return false;171 return emailer.matcher(email).matches();172 }173 174 /**175 * 判断是不是一个合法的手机号176 * 177 * @param phone178 * @return179 */180 public static boolean isPhone(String phone) {181 if (phone == null || phone.trim().length() == 0)182 return false;183 return phones.matcher(phone).matches();184 }185 186 /**187 * 字符串转整数188 * 189 * @param str190 * @param defValue191 * @return192 */193 public static int toInt(String str, int defValue) {194 try {195 return Integer.parseInt(str);196 } catch (Exception e) {197 }198 return defValue;199 }200 201 /**202 * 对象转整数203 * 204 * @param obj205 * @return 转换异常返回 0206 */207 public static int toInt(Object obj) {208 if (obj == null)209 return 0;210 return toInt(obj.toString(), 0);211 }212 213 /**214 * 对象转整数215 * 216 * @param obj217 * @return 转换异常返回 0218 */219 public static long toLong(String obj) {220 try {221 return Long.parseLong(obj);222 } catch (Exception e) {223 }224 return 0;225 }226 227 /**228 * 字符串转布尔值229 * 230 * @param b231 * @return 转换异常返回 false232 */233 public static boolean toBool(String b) {234 try {235 return Boolean.parseBoolean(b);236 } catch (Exception e) {237 }238 return false;239 }240 241 /**242 * 将一个InputStream流转换成字符串243 * 244 * @param is245 * @return246 */247 public static String toConvertString(InputStream is) {248 StringBuffer res = new StringBuffer();249 InputStreamReader isr = new InputStreamReader(is);250 BufferedReader read = new BufferedReader(isr);251 try {252 String line;253 line = read.readLine();254 while (line != null) {255 res.append(line);256 line = read.readLine();257 }258 } catch (IOException e) {259 e.printStackTrace();260 } finally {261 try {262 if (null != isr) {263 isr.close();264 isr.close();265 }266 if (null != read) {267 read.close();268 read = null;269 }270 if (null != is) {271 is.close();272 is = null;273 }274 } catch (IOException e) {275 }276 }277 return res.toString();278 }279 280 private static long lastClickTime;281 public static boolean isFastDoubleClick() {282 long time = System.currentTimeMillis();283 long timeD = time - lastClickTime;284 if ( 0 < timeD && timeD < 2000) { 285 return true; 286 } 287 lastClickTime = time; 288 return false; 289 }290 }

 

转载地址:http://gfiuo.baihongyu.com/

你可能感兴趣的文章
设计原则(四):接口隔离原则
查看>>
VuePress手把手一小時快速踩坑
查看>>
学习constructor和instanceof的区别
查看>>
Vijos P1881 闪烁的星星
查看>>
ABP理论学习之领域服务
查看>>
Qt 控制watchdog app hacking
查看>>
让所有IE支持HTML5的解决方案
查看>>
RDD之五:Key-Value型Transformation算子
查看>>
percona 5.7.11root初始密码设置
查看>>
Cognitive Security的异常检测技术
查看>>
Pyrex也许是一个好东西
查看>>
WINFORM WPF字体颜色相互转换
查看>>
能力不是仅靠原始积累(三)
查看>>
彻底学会使用epoll(一)——ET模式实现分析
查看>>
脱离标准文档流(2)---定位
查看>>
IO流之字符流
查看>>
集合异常之List接口
查看>>
Softmax回归
查看>>
紫书 习题11-11 UVa 1644 (并查集)
查看>>
App工程结构搭建:几种常见Android代码架构分析
查看>>