看下对你是否有用
public class RelativeDateFormat {private static final long ONE_MINUTE = 60000L;
private static final long ONE_HOUR = 3600000L;
private static final long ONE_DAY = 86400000L;
private static final long ONE_WEEK = 604800000L;
private static final String ONE_SECOND_AGO = "秒前";
private static final String ONE_MINUTE_AGO = "分钟前";
private static final String ONE_HOUR_AGO = "小时前";
private static final String ONE_DAY_AGO = "天前";
private static final String ONE_MONTH_AGO = "月前";
private static final String ONE_YEAR_AGO = "年前";
public static void main(String[] args) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:m:s");
Date date = formatparse("2013-11-11 18:35:35");
Systemoutprintln(format(date));
}
public static String format(Date date) {
long delta = new Date()getTime() - dategetTime();
if (delta < 1L ONE_MINUTE) {
long seconds = toSeconds(delta);
return (seconds <= 0 1 : seconds) + ONE_SECOND_AGO;
}
if (delta < 45L ONE_MINUTE) {
long minutes = toMinutes(delta);
return (minutes <= 0 1 : minutes) + ONE_MINUTE_AGO;
}
if (delta < 24L ONE_HOUR) {
long hours = toHours(delta);
return (hours <= 0 1 : hours) + ONE_HOUR_AGO;
}
if (delta < 48L ONE_HOUR) {
return "昨天";
}
if (delta < 30L ONE_DAY) {
long days = toDays(delta);
return (days <= 0 1 : days) + ONE_DAY_AGO;
}
if (delta < 12L 4L ONE_WEEK) {
long months = toMonths(delta);
return (months <= 0 1 : months) + ONE_MONTH_AGO;
} else {
long years = toYears(delta);
return (years <= 0 1 : years) + ONE_YEAR_AGO;
}
}
private static long toSeconds(long date) {
return date / 1000L;
}
private static long toMinutes(long date) {
return toSeconds(date) / 60L;
}
private static long toHours(long date) {
return toMinutes(date) / 60L;
}
private static long toDays(long date) {
return toHours(date) / 24L;
}
private static long toMonths(long date) {
return toDays(date) / 30L;
}
private static long toYears(long date) {
return toMonths(date) / 365L;
}
}
我检查了几遍,逻辑上没有错,结果差了两天:
原因1: 你获得的是当前天数的0小时:0分:0秒
当你做 int f = (int) ((((b/1000)/60)/60)/24); 这步的时候,最后除完了又转成整数,自动把小数去掉了,所以当前的天数,也就是今天没有算进去,所以少了一天。
解决方法:结尾+1天就可以了。 或者你把所有的换算都改成double型,然后向上取整。
2:当你做c2set(2012, 1, 1, 0, 0, 0); 这步的时候,你两个日期一减,把2012年1月1日那天也减去了,所以你又少了一天。
解决方法:改成c2set(2011, 12, 31, 0, 0, 0);或者还是结尾+1
代码如下:
1得到当前的时间
Calendar cal = CalendargetInstance();
String time=formatterformat(calgetTime());
String strEnd=timesubstring(0, 16);// 2007-10-30 09:30
2得到前一天的时间
Calendar c = CalendargetInstance();
cadd(CalendarDAY_OF_MONTH, -1);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mDateTime=formatterformat(cgetTime());
String strStart=mDateTimesubstring(0, 16);//2007-10-29 09:30
3得到前几天的时间
Calendar c = CalendargetInstance();
cadd(CalendarDAY_OF_MONTH, -5);//得到前5
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mDateTime=formatterformat(cgetTime());
String strStart=mDateTimesubstring(0, 16);//2007-10-24 09:30
4得到当前时间的前几年的时间
Calendar c = CalendargetInstance();
cadd(CalendarYEAR, -5);//得到前5年
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mDateTime=formatterformat(cgetTime());
String strStart=mDateTimesubstring(0, 16);//2002-10-24 09:30
以上就是关于java8判断几秒前,几分钟前,几天前全部的内容,包括:java8判断几秒前,几分钟前,几天前、java 两种方法获取今天属于今年的第多少天,结果不同。、如何用java 获取15分钟以前的时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)