3
Calendar cl =  Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles"));
cl.setTimeInMillis(time); 
Toast.makeText(getActivity(), cl.getTime().toString(), Toast.LENGTH_LONG).show();

私が入れた時間は常にESTの時間を返します。PSTで時間を返したい。おそらく間違っている可能性があることを誰かが知っていますか?

PS
私の現地時間は EST です。

4

3 に答える 3

3

これは実際には答えではありませんが、コメントするには大きすぎます。これが私が見つけたものです。

私のテストはこのように見えました

    TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
    Calendar cl = Calendar.getInstance(tz);

    System.out.println(tz.getDisplayName());
    String dayname = cl.getDisplayName(Calendar.DAY_OF_WEEK,Calendar.SHORT,Locale.US);
    String monthname = cl.getDisplayName(Calendar.MONTH,Calendar.SHORT,Locale.US);
    int hour = cl.get(Calendar.HOUR);
    int min = cl.get(Calendar.MINUTE);
    int sec = cl.get(Calendar.SECOND);
    int mill = cl.get(Calendar.MILLISECOND);
    int year = cl.get(Calendar.YEAR);
    System.out.println("Time = " + cl.getTime().toString());
    System.out.println("Manually = " +
                           dayname + " " + monthname + " " +
                           hour + ":" + min +":" + sec + ":" + mill + " " +
                           cl.getTimeZone().getDisplayName(Locale.US) + " " + year);

出力を与えた

Pacific Standard Time
Time = Tue Nov 05 11:36:33 EST 2013
Manually = Tue Nov 8:36:33:238 Pacific Standard Time 2013

見てCalendar.getTime()

public final Date getTime() {
    return new Date(getTimeInMillis());
}

弾むボールを追って…

public long getTimeInMillis() {
    if (!isTimeSet) {
    updateTime();
    }
    return time;
}

private void updateTime() {
    computeTime();
    // The areFieldsSet and areAllFieldsSet values are no longer
    // controlled here (as of 1.5).
    isTimeSet = true;
}

でもソースがcomputTime()無いのでやめておきます。

ガブリエルの答えは機能します、fwiw。

于 2013-11-05T16:41:22.937 に答える
3

これを試して:

TimeZone.setDefault(TimeZone.getTimeZone("PST"));
Calendar cl = Calendar.getInstance();
于 2013-11-05T16:16:52.330 に答える
1

Calendar.getTime() は、エポック 1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数を表すJava Dateインスタンスを返します。Date インスタンスで toString() を呼び出すと、サーバーで構成されたタイムゾーンに基づいて日付が出力されます。別のタイムゾーンで出力するために日付を適切にフォーマットするには、日付フォーマッタの使用を検討する必要があります。

TimeZone est = TimeZone.getTimeZone("America/New_York");
Calendar cal = Calendar.getInstance(est);

DateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
formatter.setTimeZone(est);
System.out.println(formatter.format(cal.getTime()));    
于 2013-11-05T16:22:02.617 に答える