1

予想される結果は、「最後のゲームは 2 時間 12 分前」です。または「3分前の最後のゲーム」。

現在、「Last game 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.");
}
4

2 に答える 2

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;

次に、文字列を作成します。

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();

}
于 2013-05-25T16:28:40.680 に答える