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<SimpleDateFormat> dateFormater = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
}
};
private final static ThreadLocal<SimpleDateFormat> dateFormater2 = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
};
private final static ThreadLocal<SimpleDateFormat> dateFormater3 = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM");
}
};
private final static ThreadLocal<SimpleDateFormat> dateFormater4 = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
};
/**
* 將字符串轉(zhuǎn)為日期類型
*
* @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 <= 10) {
ftime = (days - 1) + "天前";
} else if (days > 10) {
ftime = dateFormater2.get().format(time);
}
return ftime;
}
/**
* 判斷給定字符串時間是否為今日
*
* @param sdate
* @return boolean
*/
public static boolean isToday(String sdate) {
boolean b = false;
Date time = toDate(sdate);
Date today = new Date();
if (time != null) {
String nowDate = dateFormater2.get().format(today);
String timeDate = dateFormater2.get().format(time);
if (nowDate.equals(timeDate)) {
b = true;
}
}
return b;
}
/**
* 判斷給定字符串時間是否為今日
*
* @param sdate
* @return boolean
*/
public static boolean isThisMonth(String sdate) {
boolean b = false;
Date time = toDate(sdate);
Date today = new Date();
if (time != null) {
String nowDate = dateFormater3.get().format(today);
String timeDate = dateFormater3.get().format(time);
if (nowDate.equals(timeDate)) {
b = true;
}
}
return b;
}
/**
* 判斷是否為今年婚脱,必須固定格式如下 :2014-01-01
*
* @param time 如:2014-01-01
* @return
*/
public static boolean isThisYear(String time) {
if (time.length() != 10) {
return false;
} else {
Date today = new Date();
String nowDate = dateFormater2.get().format(today);
if (nowDate.substring(0, 4).equals(time.substring(0, 4))) {
return true;
} else {
return false;
}
}
}
/**
* 判斷給定字符串是否空白串铅乡。 空白串是指由空格望伦、制表符听系、回車符、換行符組成的字符串 若輸入字符串為null或空字符串,返回true
*
* @param input
* @return boolean
*/
public static boolean isEmpty(String input) {
if (input == null || "".equals(input))
return true;
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c != ' ' && c != '\t' && c != '\r' && c != '\n') {
return false;
}
}
return true;
}
/**
* 格式化顯示時間
* @param dateStr yyyy-MM-dd HH:mm:ss
* @return
*/
// public static String formatDate(String dateStr) {
//
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
// Date date;
// try {
// date = sdf.parse(dateStr);
// } catch (ParseException e) {
// date = new Date();
// e.printStackTrace();
// }
// String needStr = sdf.format(date);
// return needStr;
// }
/**
* @param dateStr
* @param format
* @return
*/
public static Date parseDate(String dateStr, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date date;
try {
date = sdf.parse(dateStr);
} catch (ParseException e) {
date = new Date();
e.printStackTrace();
}
return date;
}
/**
* 格式化時間
*
* @param time
* @param format
* @return
*/
public static String formatTime(long time, String format) {
if (time == 0 || TextUtils.isEmpty(format)) {
return "";
}
SimpleDateFormat sdf = new SimpleDateFormat(format.toString());
Date date = new Date(time);
String dateStr = sdf.format(date);
return dateStr;
}
/**
* 格式化時間
*
* @return
*/
public static String formatTime(String strTime) {
long time = Long.parseLong(strTime);
if (time == 0 || TextUtils.isEmpty(TIME_FORMAT_STYLE_YMD)) {
return "";
}
SimpleDateFormat sdf = new SimpleDateFormat(TIME_FORMAT_STYLE_YMD.toString());
Date date = new Date(time * 1000);
String dateStr = sdf.format(date);
return dateStr;
}
/**
* 格式化時間
*
* @return
*/
public static String formatTime(String strTime, String format) {
long time = Long.parseLong(strTime);
if (time == 0 || TextUtils.isEmpty(format)) {
return "";
}
SimpleDateFormat sdf = new SimpleDateFormat(format.toString());
Date date = new Date(time * 1000);
String dateStr = sdf.format(date);
return dateStr;
}
/*時間戳轉(zhuǎn)換成字符竄*/
static SimpleDateFormat sf;
public static String getDateToString(long time) {
Date d = new Date(time);
sf = new SimpleDateFormat("yyyy年MM月dd日");
return sf.format(d);
}
public static String formatTimeMonth(String strTime) {
long time = Long.parseLong(strTime);
if (time == 0 || TextUtils.isEmpty(TIME_FORMAT_STYLE_MD)) {
return "";
}
SimpleDateFormat sdf = new SimpleDateFormat(TIME_FORMAT_STYLE_MD.toString());
Date date = new Date(time * 1000);
String dateStr = sdf.format(date);
return dateStr;
}
/**
* 根據(jù)年 月 獲取對應(yīng)的月份 天數(shù)
*/
public static int getDaysByYearMonth(int year, int month) {
Calendar cal = 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 = cal.get(Calendar.DATE);
return maxDate;
}
/**
* 將字符串轉(zhuǎn)為日期類型
*
* @param sdate
* @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;
}
}
/**
* 獲取當(dāng)前年月日
*
* @return
*/
public static String getCurrentTime() {
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateNowStr = sdf.format(d);
return dateNowStr;
}
/**
* 獲取當(dāng)前年月日
*
* @return
*/
public static long getCurrentLongTime() {
return System.currentTimeMillis() / 1000;
}
}
[Android][工具類]TimeUtils
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門搓幌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人迅箩,你說我怎么就攤上這事溉愁∷乔鳎” “怎么了拐揭?”我有些...
- 文/不壞的土叔 我叫張陵奕塑,是天一觀的道長堂污。 經(jīng)常有香客問我,道長龄砰,這世上最難降的妖魔是什么盟猖? 我笑而不...
- 正文 為了忘掉前任换棚,我火速辦了婚禮,結(jié)果婚禮上娘汞,老公的妹妹穿的比我還像新娘夕玩。我一直安慰自己价说,他們只是感情好风秤,可當(dāng)我...
- 文/花漫 我一把揭開白布扮叨。 她就那樣靜靜地躺著,像睡著了一般碍沐。 火紅的嫁衣襯著肌膚如雪衷蜓。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼戈抄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了呛凶?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布陌兑,位于F島的核電站,受9級特大地震影響兔综,放射性物質(zhì)發(fā)生泄漏狞玛。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一心肪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧慧瘤,春花似錦固该、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽每瞒。三九已至,卻和暖如春剿骨,著一層夾襖步出監(jiān)牢的瞬間埠褪,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 前言 在任何APP開發(fā)中,日期和時間是無處不在的亩鬼,例如QQ、微信雳锋,每條信息都會顯示發(fā)送時間,還有空間爽丹、朋友圈每一條...
- [TOC] 前言 Android SDK原生 API中辛蚊,有一些常用的工具類,運用得當(dāng)可以省事省力省時嚼隘,何況還是An...
- 1. IMEI IMEI(International Mobile Equipment Identity)是國際移...
- Android開發(fā)過程中卧檐,我們需要的很多代碼都是重復(fù)多次使用的,寫成工具類是一個比較好的做法霉囚,下面是我常用的幾個工...