2017-07-14 9 views
-1

私は時間形式の変換に奇妙な問題があります。シンプルな形式のタイムゾーンの変更

私は、文字列、時間= "11時"

私が今までに、文字列の上に変換する必要がありますしていると、私は次のことをやっている:

Calendar cal= Calendar.getInstance(); 
cal.setTime(Convert.fromShortTime(timeIn)); // this method is below 

public static SimpleDateFormat SHORT_TIME = new SimpleDateFormat("HH:mm"); 

public static Date fromShortTime(String shortTime) 
{ 
    try { 
     return shortTime == null ? null : SHORT_TIME.parse(shortTime); 
    } catch (ParseException e) { 
     return null; 
    } 
} 

のでcal.setTime(Convert.fromShortTime(の時間));値を次のように変更します。 Thu Jan 01 10:00:00 PST 1970 1時間分の文字列です。

私のラップトップは山岳時間で、デバイス時間は太平洋時間です。 ラップトップの時間を太平洋に変更すると、正常に動作します。

なぜAndroid Studioのラップトップの時間がSimpledateFormatに影響するのでしょうか?

答えて

2

はい、影響します。既定では、SimpleDateFormatは指定されていない場合、システムの既定のタイムゾーンを使用します。メソッド内で指定してみてください(また、SimpleDateFormatはスレッドセーフではないため、static変数として使用しないでください)。