2016-05-02 11 views
0

タイムスタンプに分を加え、その後に新しい値を返す必要があります。タイムスタンプは、データベースから取得され、メソッドに渡された文字列としてこのパターンを持っています。yyyy-MM-DD HH:MM:ss.SSSSSSタイムスタンプに分を追加する

public static String changeCreditTimeStampMin(String tmStmp, int minutesToAdd) { 

    tmStmp = tmStmp.substring(0, tmStmp.length() - 3); 
    try { 
     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS"); 
     java.util.Date parsedDate = dateFormat.parse(tmStmp); 
     java.sql.Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime() + minutesToAdd*60*1000); 
     tmStmp = timestamp.toString(); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
    return tmStmp; 
} 

あなたが見ることができるように、私のロジックは、てSimpleDateFormatを使用し、その使用するために、タイムスタンプで部分文字列演算を使用する必要があります。私の質問は、私はタイムスタンプ文字列をカットせずに同じ結果を得ることができるより良い方法はありますか?私のJavaバージョンは1.5であり、新しいバージョンは使用できないことに注意してください。

+0

タイムスタンプを文字列として渡すと、noを参照すると、文字列を解析して時刻を変更する必要があります。本当にタイムスタンプがStringである必要がありますか?それ以外の場合は、プログラム内の数値として使用する方がよいでしょう。 – Oebele

+0

精度の低下や操作の順序が心配ですか? – rpy

+0

@Oebele私は文字列としてそれを必要としませんが、DAOクラスから取得しているものです。実際には文字列として設定された結果から多くの変数を取得していますので、そのクラスに触れないでください。 – Foxy

答えて

0

問題はあなたがmmを使用していることです。 MMを使用する必要があります。 MMは月、mmは分です。 YYYY-MM-DD HHで試してみてください:ミリメートル

その他のアプローチ:

static final long ONE_MINUTE_IN_MILLIS=60000;//millisecs 
Calendar date = Calendar.getInstance(); 
long t=date.getTimeInMillis(); 
Date afterAddingTenMins=new Date(t + (10 *ONE_MINUTE_IN_MILLIS)); 
0

より良い方法はありますか?

はい、古い旧式の日時クラスではなく、java.timeクラスを使用します。

中間のスペースをTに置き換えて、文字列入力を標準ISO 8601フォーマットに変更します。私はこの文字列がUTCの瞬間を表すことを意図していると仮定します。したがって、Zを追加して、Zuluの略でUTCを意味します。

java.timeクラスは、文字列表現の解析/生成時にデフォルトでISO 8601形式を使用します。したがって、書式設定パターンを定義することなく、解析メソッドに直接フィードします。 Instantは、ナノ秒の結果イオンでタイムライン上の瞬間を表します。

Instant instant = Instant.parse(input); 

分を追加します。これをUTCで使用する場合は、夏時間(DST)などのタイムゾーンや異常の処理には気をつけないので、このInstantを使用して別のタイムゾーンを作成してください。それ以外の場合は、wタイムゾーンを適用してZonedDateTimeを取得します。

long minutes = 5L; 
Instant later = instant.plus(minutes , ChronoUnit.MINUTES); 

ヒント:Instantのオブジェクトを文字列ではなくアプリの周囲に渡します。

関連する問題