2017-01-03 21 views
0

ミリ秒をmm:ss.SS形式に変換するのにこのAndroidコードを使用していますが、結果のdateformatには日付に30分が追加されます。Dateformatは時間に余分な時間を追加します

 Date date = new Date(millis); 
     DateFormat dateFormat= new SimpleDateFormat("mm:ss.SS", Locale.US); 
     best.add(dateFormat.format(date));\ 

実際には、ミリ秒をm:ss.SS形式に変換したいと考えています。これを達成する他の最善の方法はありますか?

ありがとうございます。 TImezoneを設定する

+0

使用しているタイムゾーンに問題があります。あなたはどのように計算して、例を説明していますか? –

+0

私はタイムゾーンを使用していません –

+0

もちろん、タイムゾーンを使用しています。ここでは暗黙的にシステムのタイムゾーンをクラスSimpleDateFormatに隠しています(私は暗黙の設定を悪とみなします)。 'TimeZone.getDefault()'は何を出力しますか?また、変数 'millis'も表示して、それ以上の分析を支援してください。私が見るもう1つの問題は、わずか2つのシンボルSSの使用です。 SSSをミリ秒間使用する必要があります。 –

答えて

0

:あなたはGMT + 30分の時間帯に、あなたが別のものを指定しない限り、生きている場合

dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 

私の推測で...、あなたのフォーマッタはそう、あなたの現在のものを選択しますそれはGMTとして0時間を考慮し、あなたがGMT + 30分であるとして、それは

は、あなたが使用することができ、ユーザの現在の場所からタイムゾーンを取得するには... + 30分を出力します

TimeZone tz = TimeZone.getDefault(); 
System.out.println("TimeZone "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezon id :: " +tz.getID()); 

n dateformatでタイムゾーンを設定できます。

それは「IST

のようなタイムゾーンはまた、あなたは、GMTがタイムゾーンのオフセットを見つけるために、次のコードを試すことができますが返されます:

public String getCurrentTimezoneOffset() { 

    TimeZone tz = TimeZone.getDefault(); 
    Calendar cal = GregorianCalendar.getInstance(tz); 
    int offsetInMillis = tz.getOffset(cal.getTimeInMillis()); 

    String offset = String.format("%02d:%02d", Math.abs(offsetInMillis/3600000), Math.abs((offsetInMillis/60000) % 60)); 
    offset = "GMT"+(offsetInMillis >= 0 ? "+" : "-") + offset; 

    return offset; 
} 

それはのようなタイムゾーンを返します。GMT + 5時30あなたはすべてのデバイスで正確な時間を見つけることができる時間帯を使用することにより、この形式

..

これも参照してください:https://developer.android.com/reference/java/util/TimeZone.html

+0

私は30分を追加したくありません。 Dateformatはdateformatにそれを追加します。私は理由を知りません... –

+0

@akshaybhange ..あなたのタイムゾーンをチェック.. – rafsanahmad007

+0

はい、私はGMT + 5:30分のタイムゾーンに住んでいますので、これは人と人を変えるでしょう。すべてのデバイス? –

関連する問題