web-dev-qa-db-ja.com

Android明日の日付を取得する方法

私の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が表示される場合、どのような変更を加える必要がありますか?

28
Jocheved
  1. 今日の日付をCalendarとして取得します。

  2. それに1日を追加します。

  3. 表示用のフォーマット。

例えば、

GregorianCalendar gc = new GregorianCalendar();
gc.add(Calendar.DATE, 1);
// now do something with the calendar
49
laalto

次のコードを使用して、明日を表示します

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
44
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();

calendar.add(Calendar.DAY_OF_YEAR, 1);
Date tomorrow = calendar.getTime();
5
Pararth

Java.util.DateおよびJava.util.Calendarで作業するのはひどいです。よりクリーンで優れたAPIを備えたJodaTimeを使用することをお勧めします。最近、JodaTimeはかなり標準になっています。

http://www.joda.org/joda-time/#Why_Joda-Time

JDK 8では、JodaTimeの影響を大きく受けた新しい日付/時刻APIが導入されることに注意してください。

4
lance-java

カレンダーの日に1つだけ追加する必要があります。

GregorianCalendar gc = new GregorianCalendar();
gc.add(Calendar.DATE, 1);
4
Piyush

別のオプション:

Calendar tomorrow = Calendar.getInstance();
tomorrow.roll(Calendar.DATE, true);

または

tomorrow.roll(Calendar.DATE, 1);

rollは、負の数を渡すことで時間を戻すためにも使用できます。たとえば、

Calendar yesterday = Calendar.getInstance();
yesterday.roll(Calendar.DATE, -1);
3

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 );
2
Basil Bourque

最初の答えは可能性をほとんどカバーしています。しかし、ここではorg.Apache.commons.lang.timeから使用できるもう1つのソリューション:

Date lTomorrow = DateUtils.addDays(new Date(), 1);
2
Stefan Beike

カレンダーを使用して今日の日付を取得し、それに1日を追加します。

1
roshanpeter

翌日の設定の最良の方法は

 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(" "));



}
0
Kunal Nikam

これは私によく働いています!!

    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

がんばろう!!

0
yoc
 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()));  
        }
0

このようにしてみてください。

dayat = gc.add(Calendar.DATE, 1);
0
Naveen
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;

        }
0
Mohit Hooda

tl; dr

Java.time.LocalDate.now()
                   .plusDays( 1 ) 

Java.time

面倒な古いDateおよびCalendarクラス、または現在メンテナンスモードになっているJoda-Timeプロジェクトを使用して、他のすべての回答は時代遅れです。最新のアプローチでは、 Java.time クラスを使用します。

LocalDate

LocalDate クラスは、時刻およびタイムゾーンのない日付のみの値を表します。

タイムゾーンは、日付を決定する際に重要です。どのような場合でも、日付はゾーンごとに世界中で異なります。たとえば、 パリフランス の真夜中から数分後が新しい日であり、 モントリオールケベック の「昨日」のままです。

タイムゾーンが指定されていない場合、JVMは現在のデフォルトのタイムゾーンを暗黙的に適用します。このデフォルトはいつでも変更される可能性があるため、結果は異なる場合があります。希望する/予想されるタイムゾーンを引数として明示的に指定することをお勧めします。

continent/regionAmerica/MontrealAfrica/Casablancaなど、 Pacific/Aucklandの形式で適切なタイムゾーン名 を指定します。 ESTISTなどの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.time フレームワークは、Java 8以降に組み込まれています。これらのクラスは、 Java.util.DateCalendar 、および SimpleDateFormat などの厄介な古い レガシー 日時クラスに取って代わります。

Joda-Time プロジェクトは、現在 メンテナンスモード であり、 Java.time クラスへの移行を推奨しています。

詳細については、 Oracleチュートリアル を参照してください。また、Stack Overflowで多くの例と説明を検索してください。仕様は JSR 31 です。

Java.timeクラスはどこで入手できますか?

  • Java SE 8Java SE 9 、およびそれ以降
    • ビルトイン。
    • 実装がバンドルされた標準Java AP​​Iの一部。
    • Java 9は、いくつかのマイナーな機能と修正を追加します。
  • Java SE 6 および Java SE 7
    • Java.time機能の多くは、 ThreeTen-Backport のJava 6および7にバックポートされています。
  • Android
    • Android以降のバージョンは、Java.timeクラスの実装をバンドルします。
    • 以前のAndroidの場合、 ThreeTenABP プロジェクトは、 ThreeTen-Backport (上記)に適合します。 ThreeTenABPの使用方法… を参照してください。
0
Basil Bourque