首页 > 解决方案 > 为什么 LocalDate 值没有在今天设置

问题描述

所以我有 7 个不同的按钮,我想用当前的顺序设置每个按钮。buttondate++

DateTimeFormatter dateFormater = DateTimeFormatter.ofPattern("d");
        ZoneId zone = ZoneId.of("Asia/Jakarta");
        LocalDate date = LocalDate.now(zone);
        int amount = 1;
        int buttonCount = 7;
        for (int i = 0; i < buttonCount; i++){
            hari1.setHint(date.format(dateFormater));
            date = date.plusDays(amount);
            hari2.setHint(date.format(dateFormater));
            date = date.plusDays(amount);
            hari3.setHint(date.format(dateFormater));
            date = date.plusDays(amount);
            hari4.setHint(date.format(dateFormater));
            date = date.plusDays(amount);
            hari5.setHint(date.format(dateFormater));
            date = date.plusDays(amount);
            hari6.setHint(date.format(dateFormater));
            date = date.plusDays(amount);
            hari7.setHint(date.format(dateFormater));
        }

日期输出开始于 27-28-29 等。这是错误的,因为今天的日期是22。输出应该是22-23-24 等,对吗?所以我尝试在日期上使用日历并且输出是正确的22。为什么 ?有没有解决方案,所以我可以得到正确的日期并得到它(日期++)?还有另一种方法吗?如何 ?

        Date today = Calendar.getInstance().getTime();
        final SimpleDateFormat fcDate = new SimpleDateFormat("dd");

标签: javaandroiddatedatetimecalendar

解决方案


您的代码的问题在于,在循环的 7 次迭代中,您将提示分配给所有按钮,因此您对每个按钮执行 7 次分配,总共 49 次分配,每次分配后增加日期,所以您达到这些不正确的日期。
所以结果是你看到从最后一次迭代中分配的值显然是错误的。
在每次迭代中对 1 个按钮执行 1 个分配,如下所示:

DateTimeFormatter dateFormater = DateTimeFormatter.ofPattern("d");
ZoneId zone = ZoneId.of("Asia/Jakarta");
LocalDate date = LocalDate.now(zone);
int amount = 1;
int buttonCount = 7;
for (int i = 0; i < buttonCount; i++){
    int buttonId = getResources().getIdentifier("hari_" + (i + 1), "id", getPackageName()); 
    Button button = (Button) findViewById(buttonId);
    button.setHint(date.format(dateFormater));
    date = date.plusDays(amount);
}

有了这条线:

int buttonId = getResources().getIdentifier("hari_" + (i + 1), "id", getPackageName());

你得到id每个按钮的整数和这一行:

Button button = (Button) findViewById(buttonId);

你得到一个引用按钮的变量。


推荐阅读