как правильно разместить дату на каждой кнопке? - PullRequest
0 голосов
/ 16 октября 2018

У меня 7 кнопок.На первой кнопке я отображаю текущую дату, на второй кнопке я хочу, чтобы она отображала дату завтрашнего дня, на третьей - дату после этого и т. Д.

Я пытался несколько раз, используя Calendar но приложение закрывается при открытии этого действия.Может кто-нибудь показать мне, как использовать Calendar на моем случае?или как решить эту проблему?

public class OrderActivity extends AppCompatActivity {

Button dateButton1, dateButton2;

Calendar calender = Calendar.getInstance();
Date today = new Date();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_order);

    dateButton1 = (Button)findViewById(R.id.button5);
    dateButton2 = (Button)findViewById(R.id.button6);


    int amount = 1; // amount of days you want to add to the current date

    SimpleDateFormat formattedDate = new SimpleDateFormat("MM");

    today.setTime(System.currentTimeMillis()); //set to current date
    dateButton1.setText(formattedDate.format(today));


    //this code below cause app stoped when this activity start
    calender.add(Calendar.DATE, amount);
    String newDate = (String)(formattedDate.format(calender.getTime()));

    dateButton2.setText(formattedDate.format(newDate));

}}

Это была моя последняя сборка, как я могу применить следующую дату на dateButton2, дату после этого на dateButton3 и так далее?

пока, когдавведите это приложение активности закрыто, и это на logcat

> java.lang.IllegalArgumentException: Cannot format given Object as a Date
                                                                       at java.text.DateFormat.format(DateFormat.java:306)
                                                                       at java.text.Format.format(Format.java:157)

PS: извините за плохой английский

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

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

Date today = new Date();
int amount = 1; // amount of days you want to add to the current date          
SimpleDateFormat formattedDate = new SimpleDateFormat("yyyy-MM-dd");            
Calendar calender = Calendar.getInstance();
// add to the current date
calender.add(Calendar.DATE, amount);    
String newDate = (String)(formattedDate.format(calender.getTime()));
System.out.println("newDate date is " + newDate);
0 голосов
/ 17 октября 2018

java.time и ThreeTenABP

Можете ли вы помочь мне использовать ThreetenABP, но в моем случае?

Это должно привести вас в правильном направлении:

    DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("M-d");
    ZoneId zone = ZoneId.of("Asia/Jayapura");
    LocalDate date = LocalDate.now(zone);
    int amount = 1; // amount of days you want to add to the current date
    int buttonCount = 7;
    for (int i = 0; i < buttonCount; i++) {
        System.out.println(date.format(dateFormatter));
        date = date.plusDays(amount);
    }

Вывод, когда я только что запустил код:

10-17
10-18
10-19
10-20
10-21
10-22
10-23

Мой импорт был:

import org.threeten.bp.LocalDate;
import org.threeten.bp.ZoneId;
import org.threeten.bp.format.DateTimeFormatter;

Что пошло не так в вашем коде?

Вы пробовали это:

    String newDate = (String)(formattedDate.format(calender.getTime()));

    dateButton2.setText(formattedDate.format(newDate));

newDate уже отформатирован в String, поэтому повторять это не имеет смысла.Метод format принимает Date или Long, но не String.

Ссылки

0 голосов
/ 16 октября 2018

Это должно работать:

public class OrderActivity extends AppCompatActivity {

Button dateButton1, dateButton2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_order);

    Date date = new Date();

    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");  

    LocalDateTime today = LocalDateTime.now(); 
    LocalDate tomorrow = LocalDate.now().plusDays(1);

    // LocalDate dayAfterTomorrow = LocalDate.now().plusDays(2);
    // continue like this

    dateButton1 = (Button)findViewById(R.id.button5);
    dateButton2 = (Button)findViewById(R.id.button6);

    dateButton1.setText(dtf.format(now)));
    dateButton2.setText(dtf.format(tomorrow)));
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...