package com.wisdom.patient.utils;
import android.annotation.SuppressLint;
import android.text.TextUtils;
import android.util.Log;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
/**
* 描述:日期处理类.
*
*/
@SuppressWarnings("all")
public class TimeUtil {
/**
* one day millisecond count
*/
public static final long ONE_DAY_MILLISECONDS =1000 *3600 *24;
public static final long ONE_HOUR_MILLISECONDS =1000 *3600;
public static final long ONE_MIN_MILLISECONDS =1000 *60;
/**
* 时间日期格式化到年月日时分秒.
*/
public static StringdateFormatYMDHMS ="yyyy-MM-dd HH:mm:ss";
public static StringdateFormatYMDHMS_f ="yyyyMMddHHmmss";
public static StringdateFormatMDHM ="MM-dd HH:mm";
public static StringdateFormat ="yyyy-MM-dd HH:mm";
/**
* 时间日期格式化到年月日.
*/
public static StringdateFormatYMD ="yyyy-MM-dd";
/**
* 时间日期格式化到年月日时分.中文显示
*/
public static StringdateFormatYMDHMofChinese ="yyyy年MM月dd日 HH:mm";
/**
* 时间日期格式化到年月日.中文显示
*/
public static StringdateFormatYMDofChinese ="yyyy年MM月dd日";
/**
* 时间日期格式化到月日.中文显示
*/
public static StringdateFormatMDofChinese ="MM月dd日";
/**
* 时间日期格式化到月.中文显示
*/
public static StringdateFormatMofChinese ="MM月";
/**
* 时间日期格式化到年月.
*/
public static StringdateFormatYM ="yyyy-MM";
/**
* 时间日期格式化到年月日时分.
*/
public static StringdateFormatYMDHM ="yyyy-MM-dd HH:mm";
/**
* 时间日期格式化到月日.
*/
public static StringdateFormatMD ="MM/dd";
public static StringdateFormatM_D ="MM-dd";
public static StringdateFormatM ="MM月";
public static StringdateFormatD ="dd";
public static StringdateFormatM2 ="MM";
public static StringdateFormatMDHMofChinese ="MM月dd日HH时mm分";
public static StringdateFormatHMofChinese ="HH时mm分";
/**
* 时分秒.
*/
public static StringdateFormatHMS ="HH:mm:ss";
/**
* 时分.
*/
public static StringdateFormatHM ="HH:mm";
/**
* 上午/下午时分
*/
public static StringdateFormatAHM ="aHH:mm";
public static StringdateFormatYMDE ="yyyy/MM/dd E";
public static StringdateFormatYMD2 ="yyyy/MM/dd";
private final static ThreadLocaldateFormater =new ThreadLocal() {
@SuppressLint("SimpleDateFormat")
@Override
protected SimpleDateFormatinitialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
};
@SuppressLint("SimpleDateFormat")
private final static ThreadLocaldateFormater2 =new ThreadLocal() {
@Override
protected SimpleDateFormatinitialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
};
/**
* 时间戳转特定格式时间
* @param dataFormat
* @param timeStamp
* @return
*/
public static StringformatData(String dataFormat, long timeStamp) {
if (timeStamp ==0) {
return "";
}
timeStamp = timeStamp *1000;
SimpleDateFormat format =new SimpleDateFormat(dataFormat);
return format.format(new Date(timeStamp));
}
/**
* 将毫秒转换成秒
*
* @param time
* @return
*/
public static int convertToSecond(Long time) {
Date date =new Date();
date.setTime(time);
return date.getSeconds();
}
/**
* 描述:String类型的日期时间转化为Date类型.
*
* @param strDate String形式的日期时间
* @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss"
* @return Date Date类型日期时间
*/
public static DategetDateByFormat(String strDate, String format) {
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(format);
Date date =null;
try {
date = mSimpleDateFormat.parse(strDate);
}catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 描述:获取偏移之后的Date.
*
* @param date 日期时间
* @param calendarField Calendar属性,对应offset的值, 如(Calendar.DATE,表示+offset天,Calendar.HOUR_OF_DAY,表示+offset小时)
* @param offset 偏移(值大于0,表示+,值小于0,表示-)
* @return Date 偏移之后的日期时间
*/
public DategetDateByOffset(Date date, int calendarField, int offset) {
Calendar c =new GregorianCalendar();
try {
c.setTime(date);
c.add(calendarField, offset);
}catch (Exception e) {
e.printStackTrace();
}
return c.getTime();
}
/**
* 描述:获取指定日期时间的字符串(可偏移).
*
* @param strDate String形式的日期时间
* @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss"
* @param calendarField Calendar属性,对应offset的值, 如(Calendar.DATE,表示+offset天,Calendar.HOUR_OF_DAY,表示+offset小时)
* @param offset 偏移(值大于0,表示+,值小于0,表示-)
* @return String String类型的日期时间
*/
public static StringgetStringByOffset(String strDate, String format, int calendarField, int offset) {
String mDateTime =null;
try {
Calendar c =new GregorianCalendar();
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(format);
c.setTime(mSimpleDateFormat.parse(strDate));
c.add(calendarField, offset);
mDateTime = mSimpleDateFormat.format(c.getTime());
}catch (ParseException e) {
e.printStackTrace();
}
return mDateTime;
}
/**
* 描述:Date类型转化为String类型(可偏移).
*
* @param date the date
* @param format the format
* @param calendarField the calendar field
* @param offset the offset
* @return String String类型日期时间
*/
public static StringgetStringByOffset(Date date, String format, int calendarField, int offset) {
String strDate =null;
try {
Calendar c =new GregorianCalendar();
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(format);
c.setTime(date);
c.add(calendarField, offset);
strDate = mSimpleDateFormat.format(c.getTime());
}catch (Exception e) {
e.printStackTrace();
}
return strDate;
}
/**
* from yyyy-MM-dd HH:mm:ss to MM-dd HH:mm
*/
public static StringformatDate(String before) {
String after;
try {
Date date =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault())
.parse(before);
after =new SimpleDateFormat("MM-dd HH:mm", Locale.getDefault()).format(date);
}catch (ParseException e) {
return before;
}
return after;
}
/**
* 描述:Date类型转化为String类型.
*
* @param date the date
* @param format the format
* @return String String类型日期时间
*/
public static StringgetStringByFormat(Date date, String format) {
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(format);
String strDate =null;
try {
strDate = mSimpleDateFormat.format(date);
}catch (Exception e) {
e.printStackTrace();
}
return strDate;
}
/**
* 描述:获取指定日期时间的字符串,用于导出想要的格式.
*
* @param strDate String形式的日期时间,必须为yyyy-MM-dd HH:mm:ss格式
* @param format 输出格式化字符串,如:"yyyy-MM-dd HH:mm:ss"
* @return String 转换后的String类型的日期时间
*/
public static StringgetStringByFormat(String strDate, String format) {
String mDateTime =null;
try {
Calendar c =new GregorianCalendar();
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(format);
c.setTime(mSimpleDateFormat.parse(strDate));
SimpleDateFormat mSimpleDateFormat2 =new SimpleDateFormat(format);
mDateTime = mSimpleDateFormat2.format(c.getTime());
}catch (Exception e) {
e.printStackTrace();
}
return mDateTime;
}
/**
* 描述:获取milliseconds表示的日期时间的字符串.
*
* @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss"
* @return String 日期时间字符串
*/
public static StringgetStringByFormat(long milliseconds, String format) {
String thisDateTime =null;
try {
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(format);
thisDateTime = mSimpleDateFormat.format(milliseconds);
}catch (Exception e) {
e.printStackTrace();
}
return thisDateTime;
}
/**
* 描述:获取表示当前日期时间的字符串.
*
* @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss"
* @return String String类型的当前日期时间
*/
public static StringgetCurrentDate(String format) {
String curDateTime =null;
try {
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(format);
Calendar c =new GregorianCalendar();
curDateTime = mSimpleDateFormat.format(c.getTime());
}catch (Exception e) {
e.printStackTrace();
}
return curDateTime;
}
//获取当前系统当天日期
public static StringgetCurrentDay() {
String curDateTime =null;
try {
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(dateFormat);
Calendar c =new GregorianCalendar();
c.add(Calendar.DAY_OF_MONTH, 0);
curDateTime = mSimpleDateFormat.format(c.getTime());
}catch (Exception e) {
e.printStackTrace();
}
return curDateTime;
}
//获取当前系统当天日期
public static StringgetCurrentDay2() {
String curDateTime =null;
try {
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(dateFormatYMDHMS);
Calendar c =new GregorianCalendar();
c.add(Calendar.DAY_OF_MONTH, 0);
curDateTime = mSimpleDateFormat.format(c.getTime());
}catch (Exception e) {
e.printStackTrace();
}
return curDateTime;
}
//获取当前系统前后第几天
public static StringgetNextDay(int i) {
String curDateTime =null;
try {
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(dateFormat);
Calendar c =new GregorianCalendar();
c.add(Calendar.DAY_OF_MONTH, i);
curDateTime = mSimpleDateFormat.format(c.getTime());
}catch (Exception e) {
e.printStackTrace();
}
return curDateTime;
}
//获取当前系统前后第几小时
public static StringgetNextHour(int i) {
String curDateTime =null;
try {
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(dateFormat);
Calendar c =new GregorianCalendar();
c.add(Calendar.HOUR_OF_DAY, i);
curDateTime = mSimpleDateFormat.format(c.getTime());
}catch (Exception e) {
e.printStackTrace();
}
return curDateTime;
}
/**
* 描述:获取表示当前日期时间的字符串(可偏移).
*
* @param format 格式化字符串,如:"yyyy-MM-dd HH:mm:ss"
* @param calendarField Calendar属性,对应offset的值, 如(Calendar.DATE,表示+offset天,Calendar.HOUR_OF_DAY,表示+offset小时)
* @param offset 偏移(值大于0,表示+,值小于0,表示-)
* @return String String类型的日期时间
*/
public static StringgetCurrentDateByOffset(String format, int calendarField, int offset) {
String mDateTime =null;
try {
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(format);
Calendar c =new GregorianCalendar();
c.add(calendarField, offset);
mDateTime = mSimpleDateFormat.format(c.getTime());
}catch (Exception e) {
e.printStackTrace();
}
return mDateTime;
}
/**
* 描述:计算两个日期所差的天数.
*
* @param date1 第一个时间的毫秒表示
* @param date2 第二个时间的毫秒表示
* @return int 所差的天数
*/
public static int getOffectDay(long date1, long date2) {
Calendar calendar1 = Calendar.getInstance();
calendar1.setTimeInMillis(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTimeInMillis(date2);
//先判断是否同年
int y1 = calendar1.get(Calendar.YEAR);
int y2 = calendar2.get(Calendar.YEAR);
int d1 = calendar1.get(Calendar.DAY_OF_YEAR);
int d2 = calendar2.get(Calendar.DAY_OF_YEAR);
int maxDays =0;
int day =0;
if (y1 - y2 >0) {
maxDays = calendar2.getActualMaximum(Calendar.DAY_OF_YEAR);
day = d1 - d2 + maxDays;
}else if (y1 - y2 <0) {
maxDays = calendar1.getActualMaximum(Calendar.DAY_OF_YEAR);
day = d1 - d2 - maxDays;
}else {
day = d1 - d2;
}
return day;
}
/**
* 描述:计算两个日期所差的小时数.
*
* @param date1 第一个时间的毫秒表示
* @param date2 第二个时间的毫秒表示
* @return int 所差的小时数
*/
public static int getOffectHour(long date1, long date2) {
Calendar calendar1 = Calendar.getInstance();
calendar1.setTimeInMillis(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTimeInMillis(date2);
int h1 = calendar1.get(Calendar.HOUR_OF_DAY);
int h2 = calendar2.get(Calendar.HOUR_OF_DAY);
int h =0;
int day =getOffectDay(date1, date2);
h = h1 - h2 + day *24;
return h;
}
/**
* 描述:计算两个日期所差的分钟数.
*
* @param date1 第一个时间的毫秒表示
* @param date2 第二个时间的毫秒表示
* @return int 所差的分钟数
*/
public static int getOffectMinutes(long date1, long date2) {
Calendar calendar1 = Calendar.getInstance();
calendar1.setTimeInMillis(date1);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTimeInMillis(date2);
int m1 = calendar1.get(Calendar.MINUTE);
int m2 = calendar2.get(Calendar.MINUTE);
int h =getOffectHour(date1, date2);
int m =0;
m = m1 - m2 + h *60;
return m;
}
/**
* 描述:获取本周一.
*
* @param format the format
* @return String String类型日期时间
*/
public static StringgetFirstDayOfWeek(String format) {
return getDayOfWeek(format, Calendar.MONDAY);
}
/**
* 描述:获取本周日.
*
* @param format the format
* @return String String类型日期时间
*/
public static StringgetLastDayOfWeek(String format) {
return getDayOfWeek(format, Calendar.SUNDAY);
}
/**
* 描述:获取本周的某一天.
*
* @param format the format
* @param calendarField the calendar field
* @return String String类型日期时间
*/
private static StringgetDayOfWeek(String format, int calendarField) {
String strDate =null;
try {
Calendar c =new GregorianCalendar();
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(format);
int week = c.get(Calendar.DAY_OF_WEEK);
if (week == calendarField) {
strDate = mSimpleDateFormat.format(c.getTime());
}else {
int offectDay = calendarField - week;
if (calendarField == Calendar.SUNDAY) {
offectDay =7 - Math.abs(offectDay);
}
c.add(Calendar.DATE, offectDay);
strDate = mSimpleDateFormat.format(c.getTime());
}
}catch (Exception e) {
e.printStackTrace();
}
return strDate;
}
/**
* 描述:获取本月第一天.
*
* @param format the format
* @return String String类型日期时间
*/
public static StringgetFirstDayOfMonth(String format) {
String strDate =null;
try {
Calendar c =new GregorianCalendar();
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(format);
//当前月的第一天
c.set(GregorianCalendar.DAY_OF_MONTH, 1);
strDate = mSimpleDateFormat.format(c.getTime());
}catch (Exception e) {
e.printStackTrace();
}
return strDate;
}
/**
* 描述:获取本月最后一天.
*
* @param format the format
* @return String String类型日期时间
*/
public static StringgetLastDayOfMonth(String format) {
String strDate =null;
try {
Calendar c =new GregorianCalendar();
SimpleDateFormat mSimpleDateFormat =new SimpleDateFormat(format);
// 当前月的最后一天
c.set(Calendar.DATE, 1);
c.roll(Calendar.DATE, -1);
strDate = mSimpleDateFormat.format(c.getTime());
}catch (Exception e) {
e.printStackTrace();
}
return strDate;
}
/**
* 描述:获取表示当前日期的0点时间毫秒数.
*
* @return the first time of day
*/
public static long getFirstTimeOfDay() {
Date date =null;
try {
String currentDate =getCurrentDate(dateFormatYMD);
date =getDateByFormat(currentDate +" 00:00:00", dateFormatYMDHMS);
return date.getTime();
}catch (Exception e) {
}
return -1;
}
/**
* 描述:获取表示当前日期24点时间毫秒数.
*
* @return the last time of day
*/
public static long getLastTimeOfDay() {
Date date =null;
try {
String currentDate =getCurrentDate(dateFormatYMD);
date =getDateByFormat(currentDate +" 24:00:00", dateFormatYMDHMS);
return date.getTime();
}catch (Exception e) {
}
return -1;
}
/**
* 描述:判断是否是闰年()
*
(year能被4整除 并且 不能被100整除) 或者 year能被400整除,则该年为闰年.
*
* @param year 年代(如2012)
* @return boolean 是否为闰年
*/
public static boolean isLeapYear(int year) {
if ((year %4 ==0 && year %400 !=0) || year %400 ==0) {
return true;
}else {
return false;
}
}
/**
* 描述:根据时间返回几天前或几分钟的描述.
*
* @param strDate the str date
* @return the string
*/
public static StringformatDateStr2Desc(String strDate, String outFormat) {
DateFormat df =new SimpleDateFormat(dateFormatYMDHM);
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
try {
c2.setTime(df.parse(strDate));
c1.setTime(new Date());
int d =getOffectDay(c1.getTimeInMillis(), c2.getTimeInMillis());
if (d ==0) {
int h =getOffectHour(c1.getTimeInMillis(), c2.getTimeInMillis());
if (h >0) {
return h +"小时前";
}else if (h <0) {
return Math.abs(h) +"小时后";
}else if (h ==0) {
int m =getOffectMinutes(c1.getTimeInMillis(), c2.getTimeInMillis());
if (m >0) {
return m +"分钟前";
}else if (m <0) {
return Math.abs(m) +"分钟后";
}else {
return "刚刚";
}
}
}else if (d >0) {
if (d ==1) {
return "昨天";
}else if (d ==2) {
return "前天";
}
}else if (d <0) {
if (d == -1) {
return "明天";
}else if (d == -2) {
return "后天";
}
return Math.abs(d) +"天后";
}
String out =getStringByFormat(strDate, outFormat);
if (!TextUtils.isEmpty(out)) {
return out;
}
}catch (Exception e) {
}
return strDate;
}
/**
* 取指定日期为星期几
*
* @param strDate 指定日期
* @param inFormat 指定日期格式
* @return String 星期几
*/
public static StringgetWeekNumber(String strDate, String inFormat) {
String week ="星期日";
Calendar calendar =new GregorianCalendar();
DateFormat df =new SimpleDateFormat(inFormat);
try {
calendar.setTime(df.parse(strDate));
}catch (Exception e) {
return "错误";
}
int intTemp = calendar.get(Calendar.DAY_OF_WEEK) -1;
switch (intTemp) {
case 0:
week ="星期日";
break;
case 1:
week ="星期一";
break;
case 2:
week ="星期二";
break;
case 3:
week ="星期三";
break;
case 4:
week ="星期四";
break;
case 5:
week ="星期五";
break;
case 6:
week ="星期六";
break;
}
return week;
}
/**
* 将字符串转位日期类型
*
* @param sdate
* @return
*/
private static DatetoDate(String sdate) {
try {
return dateFormater.get().parse(sdate);
}catch (ParseException e) {
return null;
}
}
/**
* 以友好的方式显示时间
*
* @param ms
* @return
*/
public static StringgetfriendlyTime(Long ms) {
if (ms ==null)return "";
// Date time = toDate(sdate);
Date time =new Date();
time.setTime(ms);
if (time ==null) {
return "Unknown";
}
String ftime ="";
Calendar cal = Calendar.getInstance();
// 判断是否是同一天
String curDate =dateFormater2.get().format(cal.getTime());
String paramDate =dateFormater2.get().format(time);
if (curDate.equals(paramDate)) {
int hour = (int) ((cal.getTimeInMillis() - time.getTime()) /3600000);
if (hour ==0) {
if (((cal.getTimeInMillis() - time.getTime()) /60000) <1) {
ftime ="刚刚";
}else {
ftime = Math.max((cal.getTimeInMillis() - time.getTime()) /60000, 1) +"分钟前";
}
}else {
ftime = hour +"小时前";
}
return ftime;
}
long lt = time.getTime() /86400000;
long ct = cal.getTimeInMillis() /86400000;
int days = (int) (ct - lt);
if (days ==0) {
int hour = (int) ((cal.getTimeInMillis() - time.getTime()) /3600000);
if (hour ==0)
ftime = Math.max(
(cal.getTimeInMillis() - 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 +"天前";
}else if (days >10) {
ftime =dateFormater2.get().format(time);
}
return ftime;
}
/**
* 距离当前多少个小时
*
* @param dateStr
* @return
*/
@SuppressLint("SimpleDateFormat")
public static int getExpiredHour(String dateStr) {
int ret = -1;
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date;
try {
date = sdf.parse(dateStr);
Date dateNow =new Date();
long times = date.getTime() - dateNow.getTime();
if (times >0) {
ret = ((int) (times /ONE_HOUR_MILLISECONDS));
}else {
ret = -1;
}
}catch (ParseException e) {
e.printStackTrace();
}
return ret;
}
/**
* 过了多少个小时
* @param dateStr
* @return
*/
@SuppressLint("SimpleDateFormat")
public static int getExpiredHour2(String dateStr) {
int ret = -1;
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date sendDate;
try {
sendDate = sdf.parse(dateStr);
Date dateNow =new Date(System.currentTimeMillis());
Log.e("JPush","date="+sendDate);
long times = dateNow.getTime() - sendDate.getTime();
Log.e("JPush","date.getTime()="+sendDate.getTime());
if (times >0) {
ret = ((int) (times /ONE_HOUR_MILLISECONDS));
int sdqf =(int)Math.floor(times /ONE_HOUR_MILLISECONDS);
}else {
ret = -1;
}
}catch (ParseException e) {
e.printStackTrace();
}
Log.e("JPush","ret="+ret);
return ret;
}
/**
* 判断给定字符串时间是否为今日
*
* @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 isToday(long sdate) {
boolean b =false;
Date time =new Date(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;
}
/**
* 根据用户生日计算年龄
*/
public static int getAgeByBirthday(Date birthday) {
Calendar cal = Calendar.getInstance();
if (cal.before(birthday)) {
throw new IllegalArgumentException(
"The birthDay is before Now.It's unbelievable!");
}
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH) +1;
int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
cal.setTime(birthday);
int yearBirth = cal.get(Calendar.YEAR);
int monthBirth = cal.get(Calendar.MONTH) +1;
int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
int age = yearNow - yearBirth;
if (monthNow <= monthBirth) {
if (monthNow == monthBirth) {
// monthNow==monthBirth
if (dayOfMonthNow < dayOfMonthBirth) {
age--;
}
}else {
// monthNow>monthBirth
age--;
}
}
return age;
}
/**
* 友好显示时间差
*
* @param diff 毫秒
* @return
*/
public static StringgetFriendTimeOffer(long diff) {
int day = (int) (diff / (24 *60 *60 *1000));
if (day >0)
return day +"天";
int time = (int) (diff / (60 *60 *1000));
if (time >0)
return time +"小时";
int min = (int) (diff / (60 *1000));
if (min >0)
return min +"分钟";
int sec = (int) diff /1000;
if (sec >0)
return sec +"秒";
return "1秒";
}
/**
* 友好的时间间隔
*
* @param duration 秒
* @return
*/
public static StringgetFriendlyDuration(long duration) {
String str ="";
long tmpDuration = duration;
str += (tmpDuration /60 >10 ? tmpDuration /60 :"0" + tmpDuration /60) +":";
tmpDuration %=60;
str += (tmpDuration /1 >=10 ? tmpDuration /1 :"0" + tmpDuration /1);
tmpDuration %=1;
return str;
}
/**
* 友好的时间间隔2
*
* @param duration 秒
* @return
*/
public static StringgetFriendlyDuration2(long duration) {
String str ="";
long tmpDuration = duration;
str += (tmpDuration /60>0?tmpDuration /60+"'":"");
tmpDuration %=60;
str += (tmpDuration /1>=10?tmpDuration /1+"''":"0"+tmpDuration /1+"''");
tmpDuration %=1;
return str;
}
public static StringgetFriendlyMusicDuration(long duration) {
String str ="-";
int tmpDuration = (int) (duration /1000);//秒
str += (tmpDuration /3600 >10 ? tmpDuration /3600 :"0" + tmpDuration /3600) +":";
tmpDuration %=3600;
str += (tmpDuration /60 >10 ? tmpDuration /60 :"0" + tmpDuration /60) +":";
tmpDuration %=60;
str += (tmpDuration /1 >=10 ? tmpDuration /1 :"0" + tmpDuration /1);
tmpDuration %=1;
return str;
}
/**
* 通过日期来确定星座
*
* @param mouth
* @param day
* @return
*/
public static StringgetStarSeat(int mouth, int day) {
String starSeat =null;
if ((mouth ==3 && day >=21) || (mouth ==4 && day <=19)) {
starSeat ="白羊座";
}else if ((mouth ==4 && day >=20) || (mouth ==5 && day <=20)) {
starSeat ="金牛座";
}else if ((mouth ==5 && day >=21) || (mouth ==6 && day <=21)) {
starSeat ="双子座";
}else if ((mouth ==6 && day >=22) || (mouth ==7 && day <=22)) {
starSeat ="巨蟹座";
}else if ((mouth ==7 && day >=23) || (mouth ==8 && day <=22)) {
starSeat ="狮子座";
}else if ((mouth ==8 && day >=23) || (mouth ==9 && day <=22)) {
starSeat ="处女座";
}else if ((mouth ==9 && day >=23) || (mouth ==10 && day <=23)) {
starSeat ="天秤座";
}else if ((mouth ==10 && day >=24) || (mouth ==11 && day <=22)) {
starSeat ="天蝎座";
}else if ((mouth ==11 && day >=23) || (mouth ==12 && day <=21)) {
starSeat ="射手座";
}else if ((mouth ==12 && day >=22) || (mouth ==1 && day <=19)) {
starSeat ="摩羯座";
}else if ((mouth ==1 && day >=20) || (mouth ==2 && day <=18)) {
starSeat ="水瓶座";
}else {
starSeat ="双鱼座";
}
return starSeat;
}
/**
* 返回聊天时间
* @return
*/
public static StringgetChatTimeForShow(long time){
if(TimeUtil.isToday(time)){
return TimeUtil.getStringByFormat(time, TimeUtil.dateFormatHMofChinese);
}else{
return TimeUtil.getStringByFormat(time, TimeUtil.dateFormatMDHMofChinese);
}
}
/**
* 获取指定时间的毫秒值
*/
public static long getDatelongMills(String fomat,String dateStr){
SimpleDateFormat sdf =new SimpleDateFormat(fomat);
Date date =null;
try {
date = sdf.parse(dateStr);
}catch (ParseException e) {
e.printStackTrace();
}
long longDate = date.getTime();
return longDate;
}
/**
* 两个日期比较
* @param DATE1
* @param DATE2
* @return
*/
public static int compare_date(String DATE1, String DATE2) {
DateFormat df =new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA);
try {
Date dt1 = df.parse(DATE1);
Date dt2 = df.parse(DATE2);
if (dt1.getTime() - dt2.getTime()>0) {//date1>date2
return 1;
}else {
return -1;
}
}catch (Exception exception) {
exception.printStackTrace();
}
return 0;
}
/**
*
* 给时间加几个小时
*/
public static StringaddDateMinut(String day, int hour){
SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date =null;
try {
date = format.parse(day);
}catch (Exception ex) {
ex.printStackTrace();
}
if (date ==null)
return "";
System.out.println("front:" + format.format(date)); //显示输入的日期
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR, hour);// 24小时制
date = cal.getTime();
System.out.println("after:" + format.format(date)); //显示更新后的日期
cal =null;
return format.format(date);
}
}