私のAndroidアプリケーション。今日は3月5日であるため、明日の日付を表示する必要があるため、3月6日として表示する必要があります。今日の日付、月、年を取得するコードを知っています。
計算日
GregorianCalendar gc = new GregorianCalendar();
yearat = gc.get(Calendar.YEAR);
yearstr = Integer.toString(yearat);
monthat = gc.get(Calendar.MONTH) + 1;
monthstr = Integer.toString(monthat);
dayat = gc.get(Calendar.DAY_OF_MONTH);
daystr = Integer.toString(dayat);
コードがある場合
dayat = gc.get(Calendar.DAY_OF_MONTH) + 1;
明日の日付を表示します。または単に今日の日付に1を追加しますか?たとえば、今日が1月31日である場合、上記のコードでは1または32のように表示されますか? 32が表示される場合、どのような変更を加える必要がありますか?
今日の日付をCalendar
として取得します。
それに1日を追加します。
表示用のフォーマット。
例えば、
GregorianCalendar gc = new GregorianCalendar();
gc.add(Calendar.DATE, 1);
// now do something with the calendar
次のコードを使用して、明日を表示します
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date tomorrow = calendar.getTime();
SimpleDateFormatを使用して、日付を文字列としてフォーマットします。
DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
String todayAsString = dateFormat.format(today);
String tomorrowAsString = dateFormat.format(tomorrow);
System.out.println(todayAsString);
System.out.println(tomorrowAsString);
プリント:
05-Mar-2014
06-Mar-2014
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date tomorrow = calendar.getTime();
Java.util.Date
およびJava.util.Calendar
で作業するのはひどいです。よりクリーンで優れたAPIを備えたJodaTimeを使用することをお勧めします。最近、JodaTimeはかなり標準になっています。
http://www.joda.org/joda-time/#Why_Joda-Time
JDK 8では、JodaTimeの影響を大きく受けた新しい日付/時刻APIが導入されることに注意してください。
カレンダーの日に1つだけ追加する必要があります。
GregorianCalendar gc = new GregorianCalendar();
gc.add(Calendar.DATE, 1);
別のオプション:
Calendar tomorrow = Calendar.getInstance();
tomorrow.roll(Calendar.DATE, true);
または
tomorrow.roll(Calendar.DATE, 1);
roll
は、負の数を渡すことで時間を戻すためにも使用できます。たとえば、
Calendar yesterday = Calendar.getInstance();
yesterday.roll(Calendar.DATE, -1);
Java.util.Dateおよび.Calendarクラスは厄介なことで有名です。それらを避けてください。代わりに Joda-Time ライブラリまたは Java 8 にバンドルされた新しい Java.timeパッケージ を使用してください。
Joda-Time 2.3ライブラリを使用したサンプルコード。
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime now = new DateTime( timeZone );
DateTime tomorrow = now.plusDays( 1 );
String output = DateTimeFormat.forPattern( "FF" ).withLocale(Locale.FRANCE).print( tomorrow );
最初の答えは可能性をほとんどカバーしています。しかし、ここではorg.Apache.commons.lang.timeから使用できるもう1つのソリューション:
Date lTomorrow = DateUtils.addDays(new Date(), 1);
カレンダーを使用して今日の日付を取得し、それに1日を追加します。
翌日の設定の最良の方法は
public void NextDate()
{
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
// set current date into textview
e_date.setText(new StringBuilder()
// Month is 0 based, just add 1
.append(mDay+1).append("-").append(mMonth + 1).append("-")
.append(mYear).append(" "));
}
これは私によく働いています!!
Date currentDate = new Date();// get the current date
currentDate.setDate(currentDate.getDate() + 1);//add one day to the current date
dateView.setText(currentDate.toString().substring(0, 10));// put the string in specific format in my textView
がんばろう!!
String lastDate="5/28/2018";
Calendar calendar = Calendar.getInstance();
String[] sDate=lastDate.split("/");
calendar.set(Integer.parseInt(sDate[2]),Integer.parseInt(sDate[0]),Integer.parseInt(sDate[1]));
DateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy");
// String todayAsString = dateFormat.format(today);
for (int i=1;i<29;i++)
{
calendar.add(Calendar.DAY_OF_YEAR,1);
// td[i].setText(dateFormat.format(calendar.getTime()));
System.out.println(dateFormat.format(calendar.getTime()));
}
このようにしてみてください。
dayat = gc.add(Calendar.DATE, 1);
Just call this method and send date from which you want next date
public String nextDate(Date dateClicked) {
//
String next_day;
calander_view.setCurrentDayTextColor(context.getResources().getColor(R.color.white_color));
//calander_view.setCurrentDayBackgroundColor(context.getResources().getColor(R.color.gray_color));
SimpleDateFormat dateFormatForDisplaying = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
String date_format = dateFormatForDisplaying.format(dateClicked);
SimpleDateFormat simpleDateformat = new SimpleDateFormat("E"); // the day of the week abbreviated
final Calendar calendar = Calendar.getInstance();
try {
Date date = dateFormatForDisplaying.parse(date_format);
calendar.setTime(date);
calendar.add(Calendar.DATE, 1);
String nex = dateFormatForDisplaying.format(calendar.getTime());
Date d1 = dateFormatForDisplaying.parse(nex);
String day_1 = simpleDateformat.format(d1);
next_day = nex + ", " + day_1;
} catch (ParseException e) {
e.printStackTrace();
}
return next_day;
}
Java.time.LocalDate.now()
.plusDays( 1 )
面倒な古いDate
およびCalendar
クラス、または現在メンテナンスモードになっているJoda-Timeプロジェクトを使用して、他のすべての回答は時代遅れです。最新のアプローチでは、 Java.time クラスを使用します。
LocalDate
LocalDate
クラスは、時刻およびタイムゾーンのない日付のみの値を表します。
タイムゾーンは、日付を決定する際に重要です。どのような場合でも、日付はゾーンごとに世界中で異なります。たとえば、 パリフランス の真夜中から数分後が新しい日であり、 モントリオールケベック の「昨日」のままです。
タイムゾーンが指定されていない場合、JVMは現在のデフォルトのタイムゾーンを暗黙的に適用します。このデフォルトはいつでも変更される可能性があるため、結果は異なる場合があります。希望する/予想されるタイムゾーンを引数として明示的に指定することをお勧めします。
continent/region
、 America/Montreal
、Africa/Casablanca
など、 Pacific/Auckland
の形式で適切なタイムゾーン名 を指定します。 EST
やIST
などの3〜4文字の略語は、 not 真のタイムゾーンであり、標準化されておらず、一意(!)でもないため使用しないでください。
ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate today = LocalDate.now( z ) ;
そのLocalDate
から、翌日を取得するために数学を行うことができます。
LocalDate tomorrow = today.plusDays( 1 ) ;
LocalDate
オブジェクトの値を表すStringを生成するには、 ISO 8601 標準に従ってフォーマットされたテキストのtoString
を呼び出します:YYYY-MM-DD
。
他の形式の文字列を生成するには、 DateTimeFormatter
のStack Overflowを検索します。
Java.time フレームワークは、Java 8以降に組み込まれています。これらのクラスは、 Java.util.Date
、 Calendar
、および SimpleDateFormat
などの厄介な古い レガシー 日時クラスに取って代わります。
Joda-Time プロジェクトは、現在 メンテナンスモード であり、 Java.time クラスへの移行を推奨しています。
詳細については、 Oracleチュートリアル を参照してください。また、Stack Overflowで多くの例と説明を検索してください。仕様は JSR 31 です。
Java.timeクラスはどこで入手できますか?