it-swarm.com.ru

Android, как получить завтрашнее свидание

В моем приложении для Android. Мне нужно отобразить завтрашнюю дату, например, сегодня 5 марта, поэтому мне нужно отобразить как 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;

будет ли отображаться завтрашняя дата. или просто добавить один к сегодняшней дате? Например, если сегодня 31 января. С приведенным выше кодом он будет отображаться как 1 или 32? Если отображается 32, какое изменение мне нужно сделать?

25
Jocheved
  1. Получить сегодняшнюю дату как Calendar.

  2. Добавьте 1 день к этому.

  3. Формат для отображения.

Например,

GregorianCalendar gc = new GregorianCalendar();
gc.add(Calendar.DATE, 1);
// now do something with the calendar
46
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
38
NaVaNeeTh PrOdHutuR

С Java.util.Date и Java.util.Calendar работать ужасно. Я предлагаю вам использовать JodaTime, который имеет более чистый/приятный API. JodaTime является довольно стандартным в наши дни.

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

Обратите внимание, что JDK 8 представит новый API даты/времени, находящийся под сильным влиянием JodaTime.

4
lance-java
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();

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

вы должны добавить только 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
Alberto Malagoli

Классы Java.util.Date и .Calendar печально известны своими проблемами. Избежать их. Вместо этого используйте библиотеку Joda-Time или новый пакет Java.time в комплекте с Java 8 .

Некоторые примеры кода с использованием библиотеки 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:

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
pruthwiraj.kadam

Попробуй вот так ..

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

тЛ; др

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

Java.time

Все остальные ответы устарели, с использованием старых проблемных классов Date & Calendar или проекта Joda-Time, который сейчас находится в режиме обслуживания. Современный подход использует классы Java.time.

LocalDate

Класс LocalDate представляет значение только для даты без времени суток и без часового пояса.

Часовой пояс имеет решающее значение при определении даты. В любой момент времени дата меняется по всему земному шару в зависимости от зоны. Например, через несколько минут после полуночи в Париж Франция это новый день, а еще "вчера" в Монреаль Квебек .

Если часовой пояс не указан, JVM неявно применяет свой текущий часовой пояс по умолчанию. Это значение по умолчанию может измениться в любой момент, поэтому ваши результаты могут отличаться. Лучше явно указать желаемый/ожидаемый часовой пояс в качестве аргумента.

Укажите правильное имя часового пояса в формате continent/region, например America/Montreal , Africa/Casablanca или Pacific/Auckland. Никогда не используйте 3-4-буквенное сокращение, такое как EST или IST, поскольку они являются {не истинными часовыми поясами, не стандартизированными и даже не уникальными (!). 

ZoneId z = ZoneId.of( "America/Montreal" ) ;
LocalDate today = LocalDate.now( z ) ;

С этой LocalDate вы можете сделать математику, чтобы получить на следующий день.

LocalDate tomorrow = today.plusDays( 1 ) ;

Струны

Чтобы сгенерировать строку, представляющую значение объекта LocalDate, вызовите toString для текста, отформатированного в соответствии со стандартом ISO 8601 : YYYY-MM-DD

Чтобы сгенерировать строки в других форматах, выполните поиск переполнения стека для DateTimeFormatter .


О Java.time

Java.time framework встроен в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые унаследованные классы даты и времени, такие как Java.util.Date , Calendar , & SimpleDateFormat .

Проект Joda-Time , теперь находящийся в режиме обслуживания , рекомендует выполнить переход к Java.time классам.

Чтобы узнать больше, смотрите Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация это JSR 310 .

Где взять классы Java.time? 

  • Java SE 8 , Java SE 9 и более поздние версии
    • Встроенный. 
    • Часть стандартного Java API со встроенной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и Java SE 7
    • Большая часть функциональности Java.time перенесена в Java 6 & 7 в ThreeTen-Backport .
  • Android
    • Более поздние версии Android связывают реализации классов Java.time.
    • Для более ранних версий Android ThreeTenABP project адаптируется ThreeTen-Backport (упоминалось выше). Смотрите Как использовать ThreeTenABP… .
0
Basil Bourque