时间戳,根据不同时间显示不同字符串
功能:
存储物理时间,显示时间根据用户使用时的实际时间进行换算显示
物理时间内都是今天的 显示xx:xx(24时制)
物理日期内是前一天的,显示昨天
物理时间内是前两天至七天的,显示星期几
物理日期大于7天的,显示实际日期 2016.02.22格式
解决方法:
java代码如下:
package TimeFormat;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TimeFormatFactory {
static final int TIME_CHANGE=3600000; //60*60*1000 用于把毫秒转换成小时
static final int DAY_HOURS=24; //一天24小时
/**
* 通过传入的时间和当前时间进行比较
* 根据不同时间返回不同形式的字符串
* @param date
* @return
*/
public static String getDateFormat(long date){
try {
String reString=null; //返回的字符串
int dif=dateDiff(new Date(),new Date(date));//得到当前时间和输入时间相差天数
Calendar calender=Calendar.getInstance();
SimpleDateFormat sdf;
if(dif==0){
sdf=new SimpleDateFormat("HH:mm");
reString=sdf.format(new Date(date));
return reString;
}
if(dif==1){
reString="昨天";
return reString;
}
if(dif<7&&dif>0){
calender.setTimeInMillis(date);
int w=calender.get(Calendar.DAY_OF_WEEK);
String str[]={"日","一","二","三","四","五","六"};
reString="星期"+str[w-1];
return reString;
}
sdf=new SimpleDateFormat("yyyy.MM.dd");
reString=sdf.format(new Date(date));
return reString;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 比较两个时间相差几天
* @param date1 被比较时间
* @param date2 比较时间
* @return
*/
public static int dateDiff(Date date1, Date date2) {
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
long ldate1 = date1.getTime() + cal1.get(Calendar.ZONE_OFFSET) + cal1.get(Calendar.DST_OFFSET);
long ldate2 = date2.getTime() + cal2.get(Calendar.ZONE_OFFSET) + cal2.get(Calendar.DST_OFFSET);
int hr1 = (int) (ldate1 / TIME_CHANGE); // 60*60*1000
int hr2 = (int) (ldate2 / TIME_CHANGE);
int days1 = hr1 / DAY_HOURS;
int days2 = hr2 / DAY_HOURS;
int dateDiff = days1 - days2;
return dateDiff;
}
}