Как рассчитать дни, чтобы получить дату окончания в Android? - PullRequest
0 голосов
/ 16 мая 2019

Я создаю приложение, в котором я вычислил дату начала и дату окончания, но получаю выходные дни.

Например, моя начальная дата - 2019-05-16, и я пишу 3 дня отпуска, поэтому он должен дать мне вывод на конечную дату 2019-05-19

Вот мой источниккод:

public static final String DATE_FORMAT = "d/M/yyyy";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Here i can use Start date as a 01/01/2018 and End Date is 01/01/2019
System.out.println ("Days: " + getDaysBetweenDates("01/02/2018","01    /01/2019"));
}
public static long getDaysBetweenDates(String start, String end) {
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT,      Locale.ENGLISH);
   Date startDate, endDate;
   long numberOfDays = 0;
    try {
    startDate = dateFormat.parse(start);
    endDate = dateFormat.parse(end);
    numberOfDays = getUnitBetweenDates(startDate, endDate, TimeUnit.DAYS);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return numberOfDays;
 }


private static long getUnitBetweenDates(Date startDate, Date endDate,   TimeUnit unit) {
    long timeDiff = endDate.getTime() - startDate.getTime();
    return unit.convert(timeDiff, TimeUnit.MILLISECONDS);
 }

Но что, если я захочу рассчитать количество дней и получить результат даты окончания?

enter image description here Здесь я получаю некоторыеошибки при добавлении кнопки.

Ответы [ 3 ]

0 голосов
/ 16 мая 2019

Вот оно:

Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.YEAR, 2019);
    calendar.set(Calendar.MONTH, 5);
    calendar.set(Calendar.DAY_OF_MONTH, 16);

    int NUMBER_OF_DAY_TO_ADD = 3;

    calendar.add(Calendar.DATE, NUMBER_OF_DAY_TO_ADD);

    String nextDate = String.valueOf( DateFormat.format("dd-MM-yyyy", calendar.getTimeInMillis()));
    System.out.println("Next date will:-> " + nextDate);
0 голосов
/ 16 мая 2019
    public static final String DATE_FORMAT = "d/M/yyyy";    

    //Date startDate = new Date(DATE_FORMAT.format(sourceDate));

    // convert date to calendar
    Calendar c = Calendar.getInstance();
    c.setTime(startDate);

    // manipulate date
    //c.add(Calendar.YEAR, 1);
    //c.add(Calendar.MONTH, 1);
    c.add(Calendar.DATE, 1);    //add here the number of days 
    //c.add(Calendar.HOUR, 1);
    //c.add(Calendar.MINUTE, 1);
    //c.add(Calendar.SECOND, 1);

    // convert calendar to date
    Date targetDate = c.getTime();

    System.out.println(DATE_FORMAT.format(targetDate));
0 голосов
/ 16 мая 2019

Используйте эту функцию для ожидаемого результата, в этой функции вам нужно указать дату начала и количество дней, которые вы хотите добавить.и вы получите свой результат

для объекта Date

String outputDate = addDays(new Date(),5); //for current date

 public static String addDays(Date startDate,int numberOfDays) {
    Calendar c = Calendar.getInstance();
    c.setTime(startDate);
    c.add(Calendar.DAY_OF_WEEK,numberOfDays);
    SimpleDateFormat dateFormat=new SimpleDateFormat("dd-MM-yyyy",  Locale.ENGLISH);
    String resultDate=dateFormat.format(c.getTime());
    return resultDate;
}

для строковой даты

String outputDate = addDays("01/02/2018",5);


public static String addDays(String startDate,int numberOfDays) {
    SimpleDateFormat dateFormat=new SimpleDateFormat("dd-MM-yyyy",  Locale.ENGLISH);
    Calendar c = Calendar.getInstance();
    try {
        c.setTime(dateFormat.parse(startDate));
    } catch (ParseException e) {
        e.printStackTrace();
    }
    c.add(Calendar.DAY_OF_WEEK,numberOfDays);
    String resultDate=dateFormat.format(c.getTime());
    return resultDate;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...