web-dev-qa-db-ja.com

Androidで年、月、日を取得する

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

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」となりますが、これは今日の日付ではありません。私が間違ったことは何ですか?

36
Eranga Peris

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

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

21
James
Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
calendar.get(Calendar.YEAR)
12
Sujewan

月はゼロから始まるため、特定の月に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;
3
Ganesh Giri
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プラットフォーム以上をターゲットにしている場合にうまく機能します

3
Moeed Ahmed

あなたのコードを試したところ、正しい出力が得られています。 このコードを試しているエミュレーター/電話の時間を確認する必要があります。

GetInstanceドキュメントによると、デフォルトで現在の日付と時刻に設定されます。

2
AAnkit

使用してみてください:

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

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

2
NinjAndroid

これにより、Androidシステムの日時がわかりますので、まず確認してください。

1
pyus13