预期的结果是"最后一场比赛2小时12分钟前。"或者" 3m ago之前的最后一场比赛。"。
目前它是"上一场比赛0d 2h 12m ago。",我在SimpleDateFormat中找不到任何可以做到这一点,我看到的最简单的解决方案是使用StringBuilder,测试值是否是每次都为零。
代码示例:
public String getLastgame()
{
long time = ((System.currentTimeMillis() / 60000) - this.config.getLastgameTime());
return ("Last game " + (time / 60) + "h " + (time % 60) + "m ago.");
}
答案 0 :(得分:2)
您的时间以分钟为单位,因此,请先提取所有时间成分:
long oneYear = 60 * 24 * 365;
long oneDay = 60 * 24;
long oneHour = 60;
// extract years
int years = time / oneYear;
// update your time
time = time % oneYear;
// extract days
long days = time / oneDay;
// update your time
time = time % oneDay;
// extract hours
long hours = time / oneHour;
// extract minutes (the remaining)
minutes = time % oneHour;
然后,构建你的String:
StringBuilder sb = new StringBuilder( "Last time " );
if ( years != 0 ) {
sb.append( years ).append( "y " );
}
if ( days != 0 ) {
sb.append( days ).append( "d " );
}
if ( hours != 0 ) {
sb.append( hours ).append( "h " );
}
if ( minutes != 0 ) {
sb.append( minutes ).append( "m " );
}
sb.append( " ago" );
完整的方法是:
public String getLastgame() {
long time = ((System.currentTimeMillis() / 60000) - this.config.getLastgameTime());
long oneYear = 60 * 24 * 365;
long oneDay = 60 * 24;
long oneHour = 60;
// extract years
int years = time / oneYear;
// update your time
time = time % oneYear;
// extract days
long days = time / oneDay;
// update your time
time = time % oneDay;
// extract hours
long hours = time / oneHour;
// extract minutes (the remaining)
minutes = time % oneHour;
StringBuilder sb = new StringBuilder( "Last time " );
if ( years != 0 ) {
sb.append( years ).append( "y " );
}
if ( days != 0 ) {
sb.append( days ).append( "d " );
}
if ( hours != 0 ) {
sb.append( hours ).append( "h " );
}
if ( minutes != 0 ) {
sb.append( minutes ).append( "m " );
}
sb.append( " ago" );
return sb.toString();
}
答案 1 :(得分:0)
在字符串中获取'd','m'和'h'的索引。检查索引-1和索引-2处的字符值。如果index -2是空格,请检查index-1。如果它是0,则删除这些索引。这是一种方法。