public class TimeUtil {
/**
* 日期字符串转换 pattern可以从R.string中获取,datetime_pattern_yyyymmddhhmmss,
* datetime_pattern_yyyy_mm_dd_hhmmss,
* date_pattern_chinese,datetime_pattern_chinese等
*
* @param originalPattern
* 初始日期格式
* @param targetPattern
* 目标日期格式
* @param datetime
* 日期字符串
* @return
*/
public static String formatDateTime(Context context, int originalPatternStrId, int targetPatternStrId, String datetime) {
SimpleDateFormat sdf = new SimpleDateFormat(context.getString(originalPatternStrId), Locale.getDefault());
Date date = null;
try {
date = sdf.parse(datetime);
} catch (ParseException e) {
e.printStackTrace();
}
if (date != null) {
sdf = new SimpleDateFormat(context.getString(targetPatternStrId), Locale.getDefault());
String target = sdf.format(date);
return target;
}
return null;
}
/**
* @param strDate
* e.g. "2012-12-12 12:12:12"
* @return Wed Dec 12 12:12:12 CST 2012
*/
public static Date string2Date(String strDate) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = dateFormat.parse(strDate);
} catch (ParseException e) {
try {
// 第二种格式方案
date = dateFormat2.parse(strDate);
} catch (ParseException e1) {
e1.printStackTrace();
return null;
}
}
return date;
}
/**
* @param strDate
* 2014-02-17
* @return long
*/
public static long string2Long(String strDate) {
Date date = string2Date(strDate);
return date.getTime();
}
public static long string2Long2(String time) {
Date date = null;
try {
date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(time);
} catch (Exception e) {
return 0;
}
return date.getTime();
}
/**
* time应该为13位
*
* @param time
* @return yyyy-MM-dd HH:mm:ss
*/
public static String long2String(long time) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(time);
String str = dateFormat.format(date);
return str;
}
/**
* @param time
* @return yyyy-MM-dd
*/
public static String long2String2(long time) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date(time);
String str = dateFormat.format(date);
return str;
}
/**
* time应该为13位
*
* @param time
* @return M月d日 HH:mm
*/
public static String long2String3(long time) {
DateFormat dateFormat = new SimpleDateFormat("M月d日 HH:mm");
Date date = new Date(time);
String str = dateFormat.format(date);
return str;
}
/**
* @param time
* @return yy-MM-dd
*/
public static String long2String4(long time) {
DateFormat dateFormat = new SimpleDateFormat("yy-MM-dd");
Date date = new Date(time);
String str = dateFormat.format(date);
return str;
}
/**
* @param time
* yyyy-MM-dd HH:mm:ss or yyyy-MM-ddTHH:mm:ss
* @return yyyy-MM-dd
*/
public static String trim(String time) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = string2Date(time);
String str = dateFormat.format(date);
return str;
}
/**
* @param time
* yyyy-MM-dd HH:mm:ss
* @return yyyy-MM-dd
*/
public static String trim2(String time) {
DateFormat dateFormat = new SimpleDateFormat("M月d日 HH:mm");
Date date = string2Date(time);
String str = dateFormat.format(date);
return str;
}
/**
* @param time
* yyyy-MM-dd HH:mm:ss
* @return HH:mm
*/
public static String trim3(String time) {
DateFormat dateFormat = new SimpleDateFormat("HH:mm");
Date date = string2Date(time);
String str = dateFormat.format(date);
return str;
}
/**
* @param time
* yyyy-MM-dd
* @return MM-dd
*/
public static String string2String(String time) {
DateFormat dateFormat = new SimpleDateFormat("MM-dd");
Date date = string2Date(time);
String str = dateFormat.format(date);
return str;
}
/**
* @param strDate
* yyyy-MM-dd
* @return M or d
*/
public static String string2String2(String strDate) {
DateFormat dateFormat = new SimpleDateFormat("M-d");
Date date = string2Date(strDate);
String str = dateFormat.format(date);
String[] temp = str.split("-");
if (temp[1].equals("1")) {
return temp[0] + "月";
} else {
return temp[1];
}
}
/**
* @param time
* yyyy-MM-ddTHH:mm:ss
* @return yyyy-MM-dd HH:mm:ss
*/
public static String string2String3(String time) {
Date date = null;
try {
date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
String str = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
return str;
}
/**
* @param time
* yyyy-MM-ddTHH:mm:ss
* @return yy-MM-dd
*/
public static String string2String4(String time) {
Date date = null;
try {
date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").parse(time);
} catch (Exception e) {
return null;
}
String str = new SimpleDateFormat("yyyy-MM-dd").format(date);
return str;
}
/**
* @param time
* yyyy-MM-dd
* @return yy-MM-dd
*/
public static String string2String5(String time) {
Date date = null;
try {
date = new SimpleDateFormat("yyyy-MM-dd").parse(time);
} catch (Exception e) {
return null;
}
String str = new SimpleDateFormat("yy-MM-dd").format(date);
return str;
}
/**
* 获取某一天距离今天多少天
*
* @param date
* yyyy-MM-dd'T'HH:mm:ss
* @return
*/
public static int getPassedDays(String date) {
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
int day = 0;
try {
Date passedDate = myFormatter.parse(date);
day = (int) ((System.currentTimeMillis() - passedDate.getTime()) / (24 * 60 * 60 * 1000)) + 1;
} catch (Exception e) {
return 0;
}
return day;
}
/**
*
* 获取当天开始时间
*
* @param index
* 0为当天,1为前一天,以此类推
*
* @return e.g. 1391702400
*/
public static long getStartTime(int index) {
Calendar todayStart = Calendar.getInstance();
todayStart.set(Calendar.HOUR, 0);
todayStart.set(Calendar.MINUTE, 0);
todayStart.set(Calendar.SECOND, 0);
todayStart.set(Calendar.MILLISECOND, 0);
return todayStart.getTime().getTime() / 1000 - index * 3600 * 24;
}
/**
* 获取当天结束时间
*
* @param index
* 0为当天,1为前一天,以此类推
*
* @return e.g. 1391788799
*/
public static long getEndTime(int index) {
Calendar todayEnd = Calendar.getInstance();
todayEnd.set(Calendar.HOUR, 23);
todayEnd.set(Calendar.MINUTE, 59);
todayEnd.set(Calendar.SECOND, 59);
todayEnd.set(Calendar.MILLISECOND, 999);
return todayEnd.getTime().getTime() / 1000 - index * 3600 * 24;
}
/**
*
* @param minute
* 140
* @return 2小时20分钟
*/
public static String second2Hour(int second) {
int minute = second / 60;
if (second % 60 > 30) {
minute += 1;
}
boolean hadAppend = false;
StringBuilder builder = new StringBuilder();
if (minute >= 1440) {
builder.append(minute / 1440 + "天");
minute %= 1440;
hadAppend = true;
}
if (minute >= 60) {
builder.append(minute / 60 + "小时");
minute %= 60;
hadAppend = true;
}
if (!hadAppend || minute != 0) {
builder.append(minute + "分钟");
}
return builder.toString();
}
/**
*
* @param date
* 2014-02-12
* @return
*/
public static boolean isToday(String date) {
String today = TimeUtil.long2String2(Calendar.getInstance().getTimeInMillis());
if (date.equals(today)) {
return true;
}
return false;
}
/**
*
* @param date
* 2014-02-12
* @return
*/
public static boolean isYesterday(String date) {
String yesterday = TimeUtil.long2String2(Calendar.getInstance().getTimeInMillis() - 3600 * 24 * 1000L);
if (date.equals(yesterday)) {
return true;
}
return false;
}
/**
*
* @param date
* 2014-02-12
* @return
*/
public static boolean isTheDayBeforeYesterday(String date) {
String theDayBeforeYesterday = TimeUtil.long2String2(Calendar.getInstance().getTimeInMillis() - 3600 * 24 * 1000L * 2);
if (date.equals(theDayBeforeYesterday)) {
return true;
}
return false;
}
/**
*
* @param date
* 2014-02-12
* @return
*/
public static String theDayOfWeek(String date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(string2Date(date));
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
String temp = null;
switch (dayOfWeek) {
case 1:
temp = "周日";
break;
case 2:
temp = "周一";
break;
case 3:
temp = "周二";
break;
case 4:
temp = "周三";
break;
case 5:
temp = "周四";
break;
case 6:
temp = "周五";
break;
case 7:
temp = "周六";
break;
default:
break;
}
return temp;
}
public static String convert(String mDate) {
if (TimeUtil.isToday(mDate)) {
return "今天";
} else if (TimeUtil.isYesterday(mDate)) {
return "昨天";
} else if (TimeUtil.isTheDayBeforeYesterday(mDate)) {
return "前天";
} else {
return TimeUtil.theDayOfWeek(mDate);
}
}
/**
* 获取同步时间
*
* @return
*/
public static String recentUpdateTime() {
long recentUpdateTime = PreferenceUtil.getLong(Preferences.RECENT_UPDATE_TIME);
long currentTime = System.currentTimeMillis();
int temp = (int) ((currentTime - recentUpdateTime) / 1000);// 换算成以秒为单位
String reString = null;
if (temp < 60) {
reString = "刚刚同步";
} else if (temp < 1800) {
reString = temp / 60 + "分钟前同步";
} else if (temp < 3600) {
reString = "半小时前同步";
} else if (temp < 3600 * 24) {
reString = temp / 3600 + "小时前同步";
} else if (temp < 3600 * 24 * 7) {
reString = temp / (3600 * 24) + "天前同步";
} else if (temp < 3600 * 24 * 7 * 4) {
reString = temp / (3600 * 24 * 7) + "周前同步";
} else if (temp < 3600 * 24 * 30 * 12) {
reString = temp / (3600 * 24 * 30) + "个月前同步";
} else if (temp < 3600 * 24 * 365 * 10) {
reString = temp / (3600 * 24 * 365) + "年前同步";
} else {
reString = long2String(recentUpdateTime);
}
if (recentUpdateTime == 0) {
reString = "";
}
return reString;
}
/**
* 根据给定日期,添加一天时间
*
* @param date
* yyyy-mm-dd
* @return yyyy-mm-dd
*/
public static String obtainEndDate(String date) {
return TimeUtil.long2String(TimeUtil.string2Long(date) + 86400 * 1000);
}
}