从数据中读取出来的时间怎么和当前时间作比较?

wangyou1213 2010-09-19 08:07:42
Java中从sql数据库读取出来的时间,我用一个String类型接收,但是我不想让它显示如“2010-09-17 20:03:52.2”,我想让它人性化,和当前时间作比较如果是两个小时前,我就让他返回一个(2小时前),本来想做一个封装方法的,但是不知道怎么把String类型转换成时间类型。我想找一个和sql数据库一样的,比如比较时间差,这样就方便判断。知道朋友,请帮帮忙,先先谢谢了
...全文
1194 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyou1213 2010-09-29
  • 打赏
  • 举报
回复

package dao;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateDao {

// 一天的毫秒数 60*60*1000*24
private final static long DAY_MILLIS = 86400000;

// 一小时的毫秒数 60*60*1000
private final static long HOUR_MILLIS = 3600000;

// 一分钟的毫秒数 60*1000
private final static long MINUTE_MILLIS = 60000;

//日期格式化串
private final static SimpleDateFormat sdf =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

public String getDateTime(String str){
if(str==null||"".equals(str)){
return sdf.format(new Date());
}
String days=null;
try {

SimpleDateFormat ssddff=new SimpleDateFormat("HH:mm:ss");
Date startdate=null;
//不是我要抛出异常,是它定义的时候抛出异常
try {
startdate = sdf.parse(str);
days=ssddff.format(startdate);

} catch (ParseException e) {


}
//获取以前的时间
Calendar start = Calendar.getInstance();
start.setTime(startdate);


//获取当前时间
Calendar end = Calendar.getInstance();
end.setTime(new Date());

long temp = end.getTimeInMillis() - start.getTimeInMillis();
//取得当前日期
int endDate=end.getTime().getDate();
//取得原先的日期
int startDate=start.getTime().getDate();


if(temp/1000<59){
if(temp>0&&temp<1000){
return 1+"秒钟之前";
}
return temp/1000+"秒钟之前";
}else if(temp/60000<=59){

return temp/60000+"分钟之前";
}else if(temp/3600000<24){
if(endDate==startDate){
if(temp/3600000<=12){
return temp/3600000+"小时之前";
}
return "今天"+days;
}else if(endDate==startDate+1){
return "昨天"+days;
}else if(endDate==startDate+2){
return "前天"+days;
}else{
return str.substring(0,19);
}
}else if((temp/86400000)>=1&&(temp/86400000)<2){

if(endDate==startDate){
return "今天"+days;
}else if(endDate==startDate+1){
return "昨天"+days;
}else if(endDate==startDate+2){
return "前天"+days;
}else{
return str.substring(0,19);
}
}else if((temp/86400000)>=2&&(temp/86400000)<3){
if(endDate==startDate){
return "今天"+days;
}else if(endDate==startDate+1){
return "昨天"+days;
}else if(endDate==startDate+2){
return "前天"+days;
}else{
return str.substring(0,19);
}
}else{
//返回当时间
return str.substring(0,19);
}
} catch (Exception e) {
return str.substring(0,19);
}




}
}

wangyou1213 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 alvin198761 的回复:]

java.text.SimpleDataFormat format =new java.text.SimpleDataFormat("yyyy-MM-dd HH:mm:ss");
String dateStr =format.format(new java.util.Date());
"yyyy-MM-dd HH:mm:ss" 这个格式你可以随便设 "yyyyMMdd"也行
[/Quote]
谢谢,我尝试
pengzhistar 2010-09-19
  • 打赏
  • 举报
回复
public static void main(String[] args) {
String str = "2010-09-17 20:03:52.2";
Date date = new Date();

try {
date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(str);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
int intervalDays = getIntervalDays(date, new Date());
System.out.println(intervalDays + "天");
}

public static int getIntervalDays(Date startday, Date endday) {
if (startday.after(endday)) {
Date cal = startday;
startday = endday;
endday = cal;
}
long sl = startday.getTime();
long el = endday.getTime();
long ei = el - sl;
return (int) (ei / (1000 * 60 * 60 * 24));
}
wanglaibing 2010-09-19
  • 打赏
  • 举报
回复
SimpleDateFormat d_time=new SimpleDateFormat("yyyy-MM-dd");//转换格式
madFatso 2010-09-19
  • 打赏
  • 举报
回复
public static Date dateHourCompare(String date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
Calendar cal = Calendar.getInstance();
try {
cal.setTime(sdf.parse(date));
} catch (ParseException e) {
e.printStackTrace();
}
if(cal.getTime().compareTo(new Date())==2){
cal.add(Calendar.HOUR, -2);
return cal.getTime();
}
return cal.getTime();

}
alvin198761 2010-09-19
  • 打赏
  • 举报
回复
java.text.SimpleDataFormat format =new java.text.SimpleDataFormat("yyyy-MM-dd HH:mm:ss");
String dateStr =format.format(new java.util.Date());
"yyyy-MM-dd HH:mm:ss" 这个格式你可以随便设 "yyyyMMdd"也行
蛋黄车 2010-09-19
  • 打赏
  • 举报
回复
写错一个字母,应该是SimpleDateFormat
蛋黄车 2010-09-19
  • 打赏
  • 举报
回复
SimpleDataFormat
zhuxian52 2010-09-19
  • 打赏
  • 举报
回复
String类型转换成时间类型

这个google一下一大把

50,545

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧