Java时间工具类DateUtils(把日期时间转换成xx秒前、xx分钟前、xx小时前...)
2015-08-31 10:11
621 查看
java中给定时间字符串,转换为距离现在几分钟,几天,几周前
[java] view
plaincopyprint?
<span style="font-size:24px;">
</span><span style="font-size:14px;">import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtils {
private static final long ONE_MINUTE = 60;
private static final long ONE_HOUR = 3600;
private static final long ONE_DAY = 86400;
private static final long ONE_MONTH = 2592000;
private static final long ONE_YEAR = 31104000;
public static Calendar calendar = Calendar.getInstance();
/**
*
* @param timestr
* @return 距离现在
*/
public static String fromToday(String timestr){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = null;
try {
date = df.parse(timestr);
} catch (ParseException e) {
e.printStackTrace();
return "未知时间";
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
long time = date.getTime() / 1000;
long now = new Date().getTime() / 1000;
long ago = now - time;
if(ago <= ONE_HOUR){
return ago / ONE_MINUTE + "分钟前";
}
else if(ago <= ONE_DAY){
return ago / ONE_HOUR + "小时" + (ago % ONE_HOUR / ONE_MINUTE)+ "分钟前";
}
else if(ago <= ONE_DAY * 2){
return "昨天" + calendar.get(Calendar.HOUR_OF_DAY) + "点"+ calendar.get(Calendar.MINUTE) + "分";
}
else if (ago <= ONE_DAY * 3){
return "前天" + calendar.get(Calendar.HOUR_OF_DAY) + "点" + calendar.get(Calendar.MINUTE) + "分";
}
else if (ago <= ONE_MONTH){
long day = ago / ONE_DAY;
if(day < 7)
return day + "天前" ;
else if (day >= 7 && day <14)
return "1周前";
else if (day >=14 && day <21)
return "2周前";
else if (day >= 21 && day <28)
return "3周前";
else
return "4周前";
}
else if (ago <= ONE_YEAR){
long month = ago / ONE_MONTH;
long day = ago % ONE_MONTH / ONE_DAY;
return month + "个月" + day + "天前";
}
else {
long year = ago / ONE_YEAR;
int month = calendar.get(Calendar.MONTH) + 1;// JANUARY which is 0 so month+1
return year + "年前" + month + "月" + calendar.get(Calendar.DATE)
+ "日";
}
}
}
</span>
[java] view
plaincopyprint?
<span style="font-size:24px;">
</span><span style="font-size:14px;">import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtils {
private static final long ONE_MINUTE = 60;
private static final long ONE_HOUR = 3600;
private static final long ONE_DAY = 86400;
private static final long ONE_MONTH = 2592000;
private static final long ONE_YEAR = 31104000;
public static Calendar calendar = Calendar.getInstance();
/**
*
* @param timestr
* @return 距离现在
*/
public static String fromToday(String timestr){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = null;
try {
date = df.parse(timestr);
} catch (ParseException e) {
e.printStackTrace();
return "未知时间";
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
long time = date.getTime() / 1000;
long now = new Date().getTime() / 1000;
long ago = now - time;
if(ago <= ONE_HOUR){
return ago / ONE_MINUTE + "分钟前";
}
else if(ago <= ONE_DAY){
return ago / ONE_HOUR + "小时" + (ago % ONE_HOUR / ONE_MINUTE)+ "分钟前";
}
else if(ago <= ONE_DAY * 2){
return "昨天" + calendar.get(Calendar.HOUR_OF_DAY) + "点"+ calendar.get(Calendar.MINUTE) + "分";
}
else if (ago <= ONE_DAY * 3){
return "前天" + calendar.get(Calendar.HOUR_OF_DAY) + "点" + calendar.get(Calendar.MINUTE) + "分";
}
else if (ago <= ONE_MONTH){
long day = ago / ONE_DAY;
if(day < 7)
return day + "天前" ;
else if (day >= 7 && day <14)
return "1周前";
else if (day >=14 && day <21)
return "2周前";
else if (day >= 21 && day <28)
return "3周前";
else
return "4周前";
}
else if (ago <= ONE_YEAR){
long month = ago / ONE_MONTH;
long day = ago % ONE_MONTH / ONE_DAY;
return month + "个月" + day + "天前";
}
else {
long year = ago / ONE_YEAR;
int month = calendar.get(Calendar.MONTH) + 1;// JANUARY which is 0 so month+1
return year + "年前" + month + "月" + calendar.get(Calendar.DATE)
+ "日";
}
}
}
</span>
相关文章推荐
- JVM java虚拟机的学习(一)
- 修改Eclipse的内存值,防止程序无响应
- spring多个定时任务quartz配置
- 【java】for循环语句的3种遍历方法
- 【java】java各种删除指定文件夹或文件方法详解
- Java版本的在指定目录及子目录下创建指定的文件
- SpringMVC框架介绍
- 【java】getAbsolutePath()方法详解
- 【java】File类的详解使用方法
- 数据源的配置
- DecimalFormat用法
- 【Java】Java实现多线程下载
- 使用eclipse调试SylixOS应用
- 【Java】Java单例模式的七种写法 (全)
- 【java】贪吃蛇小游戏
- eclipse中如何导入jar包源码
- Json for Java
- 使用JavaIO提供的API下载指定文件(image)
- 报表导出到word或者excel的功能实现
- 浅析Java内存模型( 深入理解Java虚拟机))