如何将int转换为特定形式的日期?

时间:2013-10-30 09:37:17

标签: java time

我有一个int号,我需要将它转换为日期,但是以这种形式

(“几秒钟前”,“几分钟前”,“几小时前”“昨天”,“几天前”,“上周”,“上个月”,“去年”)

我可以得到日期

        int seconds =1320105600;

        int  millis = seconds * 1000;
        Date date = new Date(millis);
        SimpleDateFormat sdf = new SimpleDateFormat("EEEE,MMMM d,yyyy h:mm,a", Locale.ENGLISH);
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        String formattedDate = sdf.format(date);

如何将其转换为该形式

2 个答案:

答案 0 :(得分:1)

您应该创建一个函数来执行此操作:

int currentSeconds = ((int) System.currentTimeMillis())/ 1000;
int diff = currentSeconds - seconds;
if (diff < 60)
    formatedDate = "Few seconds ago";
else if (diff < 60 * 60)
    formatedDate = "Few minutes ago";

等等。

答案 1 :(得分:0)

您可以使用Joda Time轻松获得两个日期之间的天数,分钟数和秒数。

java.util.Date d1, d2;

DateTime dt1 = new DateTime(d1);
DateTime dt2 = new DateTime(d2);

int numDays = Days.daysBetween(dt1, dt2).getDays(); 
int hours = Hours.hoursBetween(dt1, dt2).getHours() % 24;
int minutes = Minutes.minutesBetween(dt1, dt2).getMinutes() % 60);
int seconds = Seconds.secondsBetween(dt1, dt2).getSeconds() % 60);

if (numDays > 0) { return "A few days ago"; }
else if (hours > 0) { return "A few hours ago"; }
// And so on

您应该能够根据您的具体要求调整此模式(有Years.yearsBetweeenMonths.monthsBetween方法)。