45

次のコードを使用して、今日の年、月、日を取得しようとしています。

Calendar calendar = Calendar.getInstance();

int thisYear = calendar.get(Calendar.YEAR);
Log.d(TAG, "# thisYear : " + thisYear);

int thisMonth = calendar.get(Calendar.MONTH);
Log.d(TAG, "@ thisMonth : " + thisMonth);

int thisDay = calendar.get(Calendar.DAY_OF_MONTH);
Log.d(TAG, "$ thisDay : " + thisDay);

しかし、それは今日の日付ではない「2012 年 1 月と 28 日」を与えます。私が間違ったことをしましたか?

4

9 に答える 9

23

これがエミュレーターで実行されていると仮定するのは正しいでしょうか? その場合は、エミュレータの日付を正しく設定してください。正しいはずです。

メモリから、そのコードは期待どおりに動作するはずです。

于 2012-09-02T06:16:48.060 に答える
16
Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
calendar.get(Calendar.YEAR)
于 2014-11-12T12:26:52.827 に答える
13
import java.util.Calendar;
import java.util.TimeZone;
import android.widget.Toast;

Calendar calendar = Calendar.getInstance(TimeZone.getDefault());

int currentYear = calendar.get(Calendar.YEAR);
int currentMonth = calendar.get(Calendar.MONTH) + 1;
int currentDay = calendar.get(Calendar.DAY_OF_MONTH);

Toast.makeText(this,"Today's Date: " + currentYear + currentMonth + currentDay, Toast.LENGTH_SHORT).show();

「TimeZone」は、アプリケーションが Android API 27 以降のプラットフォームをターゲットにしている場合に最適です

于 2018-10-29T06:24:39.530 に答える
8

月は 0 から始まるので、指定された月に 1 を追加して、私たちがよく知っている月番号を表示する必要があります。

int thisMonth = calendar.get(Calendar.MONTH);
Log.d(TAG, "@ thisMonth : " + (thisMonth+1));

これにより、1 から始まる現在の月が表示されます。

于 2016-12-22T03:10:06.240 に答える
2

使用してみてください:

Date dt = new Date(); 
dt.getYear(); 
dt.getMonth(); 
dt.getDay();

同じ結果が得られるかどうかを確認します。その場合、システムの日付が同期していない可能性があります。詳細については、Dateクラスのドキュメントを確認してください。

于 2012-09-02T06:29:12.137 に答える
2

あなたのコードを試してみましたが、正しい出力が得られています。このコードを試しているエミュレーター/電話で時間を確認してみてください。

getInstance docs によると、デフォルトで現在の日付と時刻に設定されます。

于 2012-09-02T06:16:04.703 に答える
1

これにより、Android システムの時刻と日付が得られるので、最初に確認してください。

于 2012-09-02T06:17:47.920 に答える