Java 确定时间长度是否应以分钟、小时、天为单位

Java 确定时间长度是否应以分钟、小时、天为单位,java,datetime,calendar,Java,Datetime,Calendar,我必须显示消息发布后经过的时间。我正在编写一个方法,该方法将publisheddate作为输入并返回经过的时间 d1.gettime-pubdate.gettime=time in milliseconds. 我正在写一个if条件,其中 if time==something concat days ago, elseif hours ago elseif min ago elseif seconds ago elseif justnow. if条件应该包含什么?例如,如果(时间>=1440)

我必须显示消息发布后经过的时间。我正在编写一个方法,该方法将
publisheddate
作为输入并返回经过的时间

d1.gettime-pubdate.gettime=time in milliseconds.
我正在写一个if条件,其中

if time==something concat days ago,
elseif hours ago
elseif min ago
elseif seconds ago
elseif justnow.
if条件应该包含什么?例如,如果(时间>=1440)(如果我以分钟为单位计算日期,可以通过
时间/1000*60*60
)完成,则天数应为
;我应该在几分钟、几小时和几分钟内做什么

根据这里给出的建议,这是我写的。有什么改进建议吗

public static String TimeElapsed(final Date date)

{  

       Date Interval=new Date();
       DateTime Interval1 = new DateTime();//Converting java time to joda time
       Interval1 = new DateTime(date);
       DateTime Interval2 = new DateTime();
       Interval2=new DateTime(Interval);

       //Now we have two joda time instances

       Duration dd=new Duration(Interval1,Interval2);
      //get duration between     given            and current time
       Duration rd1=new Duration(1000);//seconds
       Duration rd2=new Duration(60000);//minutes
       Duration rd7=new Duration(60000*2);//2minutes
       Duration rd3=new Duration(3600000);//hours
       Duration rd6=new Duration(3600000*2);//2hours
       Duration rd4=new Duration(86400000);//days
       Duration rd5=new Duration(86400000*2);//2days
       if(dd.isShorterThan(rd1)){
           String k="just now";
           return k;
       }
       else if(dd.isEqual(rd1)){
           String k="just now";
           return k;

       }
       else if(dd.isLongerThan(rd1)&& dd.isShorterThan(rd2))
       {
           String k=dd.getStandardSeconds()+""+" seconds ago";
           return k;
       }
       else if(dd.isEqual(rd2) || dd.isShorterThan(rd7)){
           String k=dd.getStandardMinutes()+""+" minute ago";
           return k;
       }
       else if(dd.isLongerThan(rd2) && dd.isShorterThan(rd3)){
           String k=dd.getStandardMinutes()+""+" minutes ago";
           return k;
       }
       else if(dd.isEqual(rd3) || dd.isShorterThan(rd6))
       {
           String k=dd.getStandardHours()+""+" hour ago";
           return k;
       }
       else if(dd.isLongerThan(rd3) && dd.isShorterThan(rd4)){
            String k=dd.getStandardHours()+""+"hours ago";
            return k;
       }
       else if(dd.isEqual(rd4) || dd.isShorterThan(rd5) ) {
           String k=dd.getStandardDays()+""+" day ago";
           return k;
       }

       else if(dd.isLongerThan(rd4)){
           String k=dd.getStandardDays()+""+" days ago";
           return k;
       }
       else{
           String k="";
           return k;
       }
   }

我想您正在寻找类似于Joda Time的
Period.normalizedStandard
方法的东西

见:
我同意wrschneider99关于使用的建议,但在我看来,你应该使用
持续时间,而不是
间隔时间,假设你所说的持续时间是一个固定的毫秒数,而不是以人为中心的月数

我想提出如下建议:

// Assuming this really is a constant...
private static final Duration POST_DURATION = Duration.standardDays(2);

// Then elsewhere...
Instant expiry = post.getTime().plus(POST_DURATION);
// See below
Instant now = clock.now();

if (now.isAfter(expiry)) {
    ...
}
请注意,我将使用某种类型的
时钟
接口,带有“仅用于测试”实现和“基于系统时间”实现,并将其注入任何其他依赖项,以实现可测试性。请参阅以了解更多关于此的信息