-1

我没有接受过正规的编程培训,也不知道什么是正确的编码方式,但这确实让我抓狂。我在这里开发一些东西以获得相对时间,现在它是这样的。

if (minutes < 59) {
    if (minutes == 1) {
        relativeTifmeString = minutesString+" minute ago";
    } else {
        relativeTifmeString = minutesString+" minutes ago";
    }
} else {        
    if (hours < 23) {
            if (hours == 1) {
                relativeTifmeString = hourstring+" hour ago";
            } else {
                relativeTifmeString = hourstring+" hours ago";
            }
        } else {
            if (days == 1) {
                relativeTifmeString = dayString+" day ago";
            } else {
                relativeTifmeString = dayString+" days ago";
            }
    }
}

但这真的很难看,即使它有效?是否有可能以更漂亮/更有效的方式写下来?或者你会怎么做?

4

3 回答 3

2

我最终会得到这样的东西,这取决于你实际在做什么以及为什么。伪代码:

public String getRelativeTimeString() {
    return getAppropriateString(minutes, hours days) + " ago";
}

public String getAppropriateString(minutes, hours, days) {
    if (minutes < 59) {
        return pluralize(minuteString + " minute", minutes);
    } 

    if (hours < 23) {
        return pluralize(hourstring + " hour", hours);
    } 

    return pluralize(dayString + " day", days);
}

public String pluralize(String s, int count) {
    return count > 1 ? s + "s" : s;
}
于 2013-08-15T13:32:45.903 回答
0

将它包装在一个 返回 String的函数中。

public String getTime(){

   String outputString = "";

   // Minutes
   if(condition for minutes is true){
       outputString = "SomeText";
       return outputString ;
   }

   // Hours
   if(condition for hours is true){
       outputString = "SomeText";
       return outputString ;
   }

   // Days
   if(condition for daysis true){
       outputString = "SomeText";
       return outputString ;
   }
}
于 2013-08-15T13:25:27.787 回答
0

如果我们首先知道分钟和小时是如何填充的,那将会有所帮助。例如,天数是 2,小时数是 11,分钟数是 23 吗?如果是这样,If 语句:

if (minutes < 59) {
if (minutes == 1) {
    relativeTimeString = minutesString+" minute ago";
} else {
    relativeTimeString = minutesString+" minutit ago";
}

将是条件将进入的唯一 if 语句,即使它已经超过 2 天前。

于 2013-08-15T13:28:33.147 回答