用...之前的java替换日期

时间:2015-03-17 09:41:11

标签: jodatime

我已经开始在java中构建一个逻辑,它将把日期输入输入到< dd-MM-yyyy HH:mm:ss'格式化并以下列方式显示输出:

如果日期是今天/昨天那么它应该是:今天/昨天HH:mm am / pm
如果它不到7天前:x天前
如果超过7天前:上周
同样
两周前 三个星期前 一个月前(即四周前)
2个月前
..
11个月前
一年前 然后x年前。
我需要的只是从今天开始计算天数。 我遇到了joda-时间让我的工作很轻松,但我无法确定它是否有任何内置的东西可以给我所需的输出。

int days = Days.daysBetween(new LocalDate(), new LocalDate()).getDays();

我今天写了这段代码到今天,但我不知道如何在joda-time休息。请指导我。

1 个答案:

答案 0 :(得分:0)

我创造了我的逻辑。谢谢! `String convertDateToWords(String datestr)抛出java.text.ParseException {

//here datestr is in this format from mysql database: "2015-03-03 09:14:04.0";

SimpleDateFormat formatter =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date bDate = formatter.parse(datestr);

Calendar today = Calendar.getInstance();
Calendar date = Calendar.getInstance();
date.setTime(bDate);

String str = "";
String ampm = new SimpleDateFormat("hh:mm a").format(bDate);
int fromYear = today.get(Calendar.YEAR);
int toYear = date.get(Calendar.YEAR);

int fromMonth = today.get(Calendar.MONTH)+1;
int toMonth = date.get(Calendar.MONTH)+1;

date.set(Calendar.YEAR, today.get(Calendar.YEAR));
int fromDay = today.get(Calendar.DAY_OF_YEAR);
int toDay = date.get(Calendar.DAY_OF_YEAR);

if(fromYear!=toYear){
    str = (fromYear-toYear)+" year(s) ago";
}else if(fromMonth!=toMonth){
    str = (fromMonth-toMonth)+" month(s) ago";
}else{
    int diff = fromDay - toDay;        
    if(diff == 0){
        str = " today | "+ampm;
    }
     if(diff == 1){
        str = " yesterday | "+ampm;
    }
     if(diff >=2 && diff <7){
        str = " "+diff+" days ago";
        str = getDay(date.get(Calendar.DAY_OF_WEEK))+" | "+ampm;
    }
    if(diff >=7 && diff <14){
        str = " last week";
    }
    if(diff >=14 && diff <21){
        str = " 2 weeks ago";
    }
    if(diff >=21 && diff <28){
        str = " 3 weeks ago";
    }
    if(diff >=28){
        str = " 4 weeks ago";
    }
}

return str;
}