次のコードを使用して、今日の年、月、日を取得しようとしています。
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);
ただし、「1年目は2012年、1月目は28、日付は28」となりますが、これは今日の日付ではありません。私が間違ったことは何ですか?
これがエミュレータで実行されていると仮定して正しいでしょうか?その場合、エミュレーターの日付を正しく設定すれば、正しいはずです。
メモリから、そのコードは期待どおりに動作するはずです。
Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
calendar.get(Calendar.YEAR)
月はゼロから始まるため、特定の月に1を追加して、使い慣れた月番号を表示する必要があります。
int thisMonth = calendar.get(Calendar.MONTH);
Log.d(TAG, "@ thisMonth : " + (thisMonth+1));
これにより、1から始まる現在の月が表示されます。
これを試してください。
Calendar instance = Calendar.getInstance();
currentMonth = instance.get(Calendar.MONTH);
currentYear = instance.get(Calendar.YEAR);
int month=currentMonth+1;
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プラットフォーム以上をターゲットにしている場合にうまく機能します
あなたのコードを試したところ、正しい出力が得られています。 このコードを試しているエミュレーター/電話の時間を確認する必要があります。
GetInstanceドキュメントによると、デフォルトで現在の日付と時刻に設定されます。
使用してみてください:
Date dt = new Date();
dt.getYear();
dt.getMonth();
dt.getDay();
同じ結果が得られるかどうかを確認します。その場合、システムの日付はおそらく同期していません。詳細については、 Dateクラスのドキュメント を確認してください。
これにより、Androidシステムの日時がわかりますので、まず確認してください。