import android.text.TextUtils;
import android.util.Log;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Pattern;
/**
* 日期时间格式封装 工具类
*
*/
public class TimeUtils {
public static final String TIME_FORMAT_STYLE_DIANDIAN = "yyyy.MM.dd";
public static final String TIME_FORMAT_STYLE_YMD = "yyyy/MM/dd HH:mm";
public static final String Time_FORMAT_YEAD = "yyyy年MM月dd日 HH:mm";
public static final String Time_POSITION = "yyyy/MM/dd";
public static final String TIME_FORMAT_STYLE_MD = "MM月dd日 HH:mm";
private final static Pattern emailer = Pattern
.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
// private final static SimpleDateFormat dateFormater = new
// SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// private final static SimpleDateFormat dateFormater2 = new
// SimpleDateFormat("yyyy-MM-dd");
private final static ThreadLocal dateFormater = new ThreadLocal() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
}
};
private final static ThreadLocal dateFormater2 = new ThreadLocal() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
};
private final static ThreadLocal dateFormater3 = new ThreadLocal() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM");
}
};
private final static ThreadLocal dateFormater4 = new ThreadLocal() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
};
/**
* 将字符串转为日期类型
*
* @param sdate
* @return
*/
public static Date toDate(String sdate) {
Date d = new Date();
d.setTime(Long.parseLong(sdate) * 1000);
return d;
}
/**
* 友好方式显示日期
*
* @param sdate
* @return
*/
public static String friendly_time(String sdate) {
Date time = toDate(sdate);
Log.i("toDate", time.toString());
return friendly_time1(time);
}
/**
* 以友好的方式显示时间
*
* @param time
* @return
*/
public static String friendly_time1(Date time) {
if (time == null) {
return "Unknown";
}
Date serviceTime = new Date();
if (serviceTime == null) {
return "Unknown1";
}
String ftime = "";
// 判断是否是同一天
String curDate = dateFormater2.get().format(serviceTime.getTime());
String paramDate = dateFormater2.get().format(time);
if (curDate.equals(paramDate)) {
int hour = (int) ((serviceTime.getTime() - time.getTime()) / 3600000);
if (hour == 0)
ftime = Math.max(
(serviceTime.getTime() - time.getTime()) / 60000, 1)
+ "分钟前";
else
ftime = hour + "小时前";
return ftime;
}
long lt = time.getTime() / 86400000;
long ct = serviceTime.getTime() / 86400000;
int days = (int) (ct - lt);
if (days == 0) {
int hour = (int) ((serviceTime.getTime() - time.getTime()) / 3600000);
if (hour == 0)
ftime = Math.max(
(serviceTime.getTime() - time.getTime()) / 60000, 1)
+ "分钟前";
else
ftime = hour + "小时前";
} else if (days == 1) {
ftime = "昨天";
} else if (days == 2) {
ftime = "前天";
} else if (days > 2 && days <&#61; 10) {
ftime &#61; (days - 1) &#43; "天前";
} else if (days > 10) {
ftime &#61; dateFormater2.get().format(time);
}
return ftime;
}
/**
* 判断给定字符串时间是否为今日
*
* &#64;param sdate
* &#64;return boolean
*/
public static boolean isToday(String sdate) {
boolean b &#61; false;
Date time &#61; toDate(sdate);
Date today &#61; new Date();
if (time !&#61; null) {
String nowDate &#61; dateFormater2.get().format(today);
String timeDate &#61; dateFormater2.get().format(time);
if (nowDate.equals(timeDate)) {
b &#61; true;
}
}
return b;
}
/**
* 判断给定字符串时间是否为今日
*
* &#64;param sdate
* &#64;return boolean
*/
public static boolean isThisMonth(String sdate) {
boolean b &#61; false;
Date time &#61; toDate(sdate);
Date today &#61; new Date();
if (time !&#61; null) {
String nowDate &#61; dateFormater3.get().format(today);
String timeDate &#61; dateFormater3.get().format(time);
if (nowDate.equals(timeDate)) {
b &#61; true;
}
}
return b;
}
/**
* 判断是否为今年&#xff0c;必须固定格式如下 &#xff1a;2014-01-01
*
* &#64;param time 如&#xff1a;2014-01-01
* &#64;return
*/
public static boolean isThisYear(String time) {
if (time.length() !&#61; 10) {
return false;
} else {
Date today &#61; new Date();
String nowDate &#61; dateFormater2.get().format(today);
if (nowDate.substring(0, 4).equals(time.substring(0, 4))) {
return true;
} else {
return false;
}
}
}
/**
* 判断给定字符串是否空白串。 空白串是指由空格、制表符、回车符、换行符组成的字符串 若输入字符串为null或空字符串&#xff0c;返回true
*
* &#64;param input
* &#64;return boolean
*/
public static boolean isEmpty(String input) {
if (input &#61;&#61; null || "".equals(input))
return true;
for (int i &#61; 0; i char c &#61; input.charAt(i); if (c !&#61; &#39; &#39; && c !&#61; &#39;\t&#39; && c !&#61; &#39;\r&#39; && c !&#61; &#39;\n&#39;) { return false; } } return true; } /** * 格式化显示时间 * &#64;param dateStr yyyy-MM-dd HH:mm:ss * &#64;return */ // public static String formatDate(String dateStr) { // // SimpleDateFormat sdf &#61; new SimpleDateFormat("yyyy-MM-dd HH:mm"); // Date date; // try { // date &#61; sdf.parse(dateStr); // } catch (ParseException e) { // date &#61; new Date(); // e.printStackTrace(); // } // String needStr &#61; sdf.format(date); // return needStr; // } /** * &#64;param dateStr * &#64;param format * &#64;return */ public static Date parseDate(String dateStr, String format) { SimpleDateFormat sdf &#61; new SimpleDateFormat(format); Date date; try { date &#61; sdf.parse(dateStr); } catch (ParseException e) { date &#61; new Date(); e.printStackTrace(); } return date; } /** * 格式化时间 * * &#64;param time * &#64;param format * &#64;return */ public static String formatTime(long time, String format) { if (time &#61;&#61; 0 || TextUtils.isEmpty(format)) { return ""; } SimpleDateFormat sdf &#61; new SimpleDateFormat(format.toString()); Date date &#61; new Date(time); String dateStr &#61; sdf.format(date); return dateStr; } /** * 格式化时间 * * &#64;return */ public static String formatTime(String strTime) { long time &#61; Long.parseLong(strTime); if (time &#61;&#61; 0 || TextUtils.isEmpty(TIME_FORMAT_STYLE_YMD)) { return ""; } SimpleDateFormat sdf &#61; new SimpleDateFormat(TIME_FORMAT_STYLE_YMD.toString()); Date date &#61; new Date(time * 1000); String dateStr &#61; sdf.format(date); return dateStr; } /** * 格式化时间 * * &#64;return */ public static String formatTime(String strTime, String format) { long time &#61; Long.parseLong(strTime); if (time &#61;&#61; 0 || TextUtils.isEmpty(format)) { return ""; } SimpleDateFormat sdf &#61; new SimpleDateFormat(format.toString()); Date date &#61; new Date(time * 1000); String dateStr &#61; sdf.format(date); return dateStr; } /*时间戳转换成字符窜*/ static SimpleDateFormat sf; public static String getDateToString(long time) { Date d &#61; new Date(time); sf &#61; new SimpleDateFormat("yyyy年MM月dd日"); return sf.format(d); } public static String formatTimeMonth(String strTime) { long time &#61; Long.parseLong(strTime); if (time &#61;&#61; 0 || TextUtils.isEmpty(TIME_FORMAT_STYLE_MD)) { return ""; } SimpleDateFormat sdf &#61; new SimpleDateFormat(TIME_FORMAT_STYLE_MD.toString()); Date date &#61; new Date(time * 1000); String dateStr &#61; sdf.format(date); return dateStr; } /** * 根据年 月 获取对应的月份 天数 */ public static int getDaysByYearMonth(int year, int month) { Calendar cal &#61; Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, month - 1); cal.set(Calendar.DATE, 1); cal.roll(Calendar.DATE, -1); int maxDate &#61; cal.get(Calendar.DATE); return maxDate; } /** * 将字符串转为日期类型 * * &#64;param sdate * &#64;return */ public static Date toDate2(String sdate) { try { if (sdate.contains("/")) { return dateFormater2.get().parse(sdate); } else { return dateFormater4.get().parse(sdate); } } catch (ParseException e) { return null; } } /** * 获取当前年月日 * * &#64;return */ public static String getCurrentTime() { Date d &#61; new Date(); SimpleDateFormat sdf &#61; new SimpleDateFormat("yyyy-MM-dd"); String dateNowStr &#61; sdf.format(d); return dateNowStr; } /** * 获取当前年月日 * * &#64;return */ public static long getCurrentLongTime() { return System.currentTimeMillis() / 1000; } }