1

現在の日付/時刻を次の形式で取得しようとしていますが、

SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z"); 
// should display something similar to  2001.07.04 AD at 12:08:56 PDT
Calendar calendar = Calendar.getInstance();
calendar.set(2009, 2, 4, 10, 22, 44);
format.format( calendar.getTime() );
System.out.println(calendar.getTime());

ただし、Wed Mar 04 10:22:44 IST 2009 と表示されます。

2 番目の質問は、設定された時間のミリ秒値を確認したいということです。

System.out.println(calendar.getTimeInMillis());

ただし、以前に設定した時間ではなく、常に現在のミリ秒値を返します。

ここで何が欠けていますか?

4

3 に答える 3

2

SimpleDateFormat#format(Object)メソッドはフォーマットされた を返しますが、メソッドが返す方法Stringには影響しませんCalendar#getTime()。そのためには、次のことを行う必要があります。

System.out.println(format.format(calendar.getTime()));
于 2010-11-28T06:28:17.937 に答える
1

Calendar.get(Calendar.MILLISECONDS)質問の 2 番目の部分では、カレンダー オブジェクトのミリ秒フィールドを取得するために呼び出す必要があります。

于 2010-11-28T08:25:18.597 に答える
1

私が目にする最初の問題format.format(calendar.getTime());は、文字列を返し、実際にはカレンダーの書式設定を変更しないことです。指定した形式を使用して実際に日付を出力するには、最後の 2 行を に置き換えSystem.out.println(format.format(calendar.getTime()));ます (SimpleDateFormat が有効であると仮定しますが、一見問題ないように見えます)。

残念ながら、あなたが抱えている 2 番目の問題についてはよくわかりませんが、始める場所があります。私は と の Javadoc の文言のファンではありませgetTime()getTimeInMillis()。このgetTime()メソッドは、「 thisの時刻値Dateを表すオブジェクト」を返し、「エポックからの UTC ミリ秒としての現在時刻」を返します。私には、言い回しの違いは、それがインスタンス メソッドであるにもかかわらず、Calendar オブジェクトによって指定された日付を使用しないことを意味します。1970 年 1 月 1 日から Date オブジェクトで表される日付までの時間をミリ秒単位で返すドキュメントである、Calendarの表現でメソッドを呼び出してみてください。CalendargetTimeInMillis()getTimeInMillis()System.out.println(calendar.getTime().getTime());getTime()Date

于 2010-11-28T06:30:19.737 に答える