68

アプリを London Server でホストしています。私はスペインのマドリッドにいます。したがって、タイムゾーンは -2 時間です。

自分のタイムゾーンで現在の日付/時刻を取得するにはどうすればよいですか。

Date curr_date = new Date(System.currentTimeMillis());

例えば

Date curr_date = new Date(System.currentTimeMillis("MAD_TIMEZONE"));

Joda -Timeで

DateTimeZone zone = DateTimeZone.forID("Europe/Madrid");
DateTime dt = new DateTime(zone);
int day = dt.getDayOfMonth();
int year = dt.getYear();
int month = dt.getMonthOfYear();
int hours = dt.getHourOfDay();
int minutes = dt.getMinuteOfHour();
4

14 に答える 14

100

Date表示方法に応じて、常にUTCベース...またはタイムゾーンニュートラルです。Aはある時点を表すDate だけです。タイムゾーンに依存せず、Unix エポックからのミリ秒数だけです。「のローカル インスタンス」という概念はありませんDate。「ローカル」タイムゾーンDateと組み合わせて、Calendarおよび/または使用するために使用します。マドリッドのタイムゾーンを取得するためにTimeZone.getDefault()使用します。TimeZone.getTimeZone("Europe/Madrid")

...または、全体をより明確にする傾向があるJoda Timeを使用します、IMO。Joda Timeでは、特定の暦体系とタイム ゾーンにおけるDateTime瞬間である値を使用します。

java.time.ZonedDateTimeJava 8では、Joda Time の Java 8 に相当する を使用しますDateTime

于 2009-08-20T10:53:04.890 に答える
2

これが役立つかもしれないことを確認してください。私にとってはうまくいきます。コードは夏時間もカバーしていました

    TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
    Calendar cal = Calendar.getInstance();      
    // If needed in hours rather than milliseconds
    int LocalOffSethrs = (int) ((cal.getTimeZone().getRawOffset()) *(2.77777778 /10000000));        
    int ChinaOffSethrs = (int) ((tz.getRawOffset()) *(2.77777778 /10000000));       
    int dts = cal.getTimeZone().getDSTSavings();
    System.out.println("Local Time Zone : " + cal.getTimeZone().getDisplayName());
    System.out.println("Local Day Light Time Saving : " + dts);
    System.out.println("China Time : " + tz.getRawOffset());
    System.out.println("Local Offset Time from GMT: " + LocalOffSethrs);
    System.out.println("China Offset Time from GMT: " + ChinaOffSethrs);    
    // Adjust to GMT
    cal.add(Calendar.MILLISECOND,-(cal.getTimeZone().getRawOffset()));  
    // Adjust to Daylight Savings
    cal.add(Calendar.MILLISECOND, - cal.getTimeZone().getDSTSavings());
    // Adjust to Offset
    cal.add(Calendar.MILLISECOND, tz.getRawOffset());       
    Date dt = new Date(cal.getTimeInMillis());              
    System.out.println("After adjusting offset Acctual China Time :" + dt); 
于 2012-03-20T07:13:14.017 に答える
1

カレンダーを使用して機能させることができませんでした。DateFormat を使用する必要があります

//Wednesday, July 20, 2011 3:54:44 PM PDT
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
df.setTimeZone(TimeZone.getTimeZone("PST"));
final String dateTimeString = df.format(new Date());

//Wednesday, July 20, 2011
df = DateFormat.getDateInstance(DateFormat.FULL);
df.setTimeZone(TimeZone.getTimeZone("PST"));
final String dateString = df.format(new Date());

//3:54:44 PM PDT
df = DateFormat.getTimeInstance(DateFormat.FULL);
df.setTimeZone(Timezone.getTimeZone("PST"));
final String timeString = df.format(new Date());
于 2011-07-20T23:00:24.407 に答える
-1

ゾーンの時間を見つけるためのいくつかの手順を次に示します。

現在の日付 = 新しい日付 ();

 DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");  
 df.setTimeZone(TimeZone.getTimeZone("Europe/London"));  

 System.out.println("timeZone.......-->>>>>>"+df.format(now));  
于 2014-07-16T12:20:36.383 に答える
-2
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
df.setTimeZone(TimeZone.getTimeZone("PST"));
final String dateTimeString = df.format(new Date());
于 2011-11-28T09:30:18.577 に答える