1

嗨,我正在实现一个名为日历的功能。现在从当前月份名称和当前年份从此如何显示日期名称和日期编号。

代码:

cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
            Date startDate = cal.getTime();
            cal.add(Calendar.DATE, 6);
            Date endDate = cal.getTime();

            Log.d(TAG, "Start Date = " + startDate);
            Log.d(TAG, "End Date = " + endDate);

例子:Dec 2020

预期输出:

Wed -9
Thu -10
Fri -11
Sat- 12
Sun- 13

任何人都可以帮助我如何实现我的目标

4

3 回答 3

3

您可以使用声明的for循环来做到这一点

  1. 今天的初始值
  2. 终止值作为月底
  3. 一天的增量值

在循环体内,打印 3 个字母的工作日名称 (ie EEE) 和d日期的日期 (ie ),格式为DateTimeFormatter.ofPattern("EEE - d", Locale.ENGLISH).

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.Locale;

class Main {
    public static void main(String[] args) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE - d", Locale.ENGLISH);
        LocalDate today = LocalDate.now();
        for (LocalDate date = today; !date.isAfter(today.with(TemporalAdjusters.lastDayOfMonth())); date = date
                .plusDays(1)) {
            System.out.println(date.format(formatter));
        }
    }
}

输出:

Fri - 11
Sat - 12
Sun - 13
...
...
...
Wed - 30
Thu - 31

注意:本月的所有日期,从今天开始,都是两位数,因此无论您使用日期还是月份日期都没有d关系dd。但是,如果您的要求是始终以两位数打印日期(例如,01而不是1),dd请在DateTimeFormatter模式中使用。


一些有用的注释:

日期时间 APIjava.util及其格式化 APISimpleDateFormat已过时且容易出错。建议完全停止使用它们并切换到现代日期时间 API在Trail: Date Time了解有关现代日期时间 API 的更多信息。

出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到 Java 6 和 7。

如果您正在为一个 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请通过 desugaring和How to use ThreeTenABP in Android Project检查Java 8+ APIs available

于 2020-12-11T15:28:44.247 回答
2
于 2020-12-10T03:45:36.073 回答
0

这将完成工作。

public void printDaysOfMonth(int year, int month) {

    Calendar calendar = Calendar.getInstance();
    SimpleDateFormat formatter = new SimpleDateFormat("EEE-d", Locale.ENGLISH);
    calendar.set(year, month, 1);
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    while (calendar.get(Calendar.MONTH) == month) {
        String fEndDate = formatter.format(calendar.getTime());
        System.out.println(fEndDate);
        calendar.add(Calendar.DATE, 1);
    }

}

注: 1 月0 和 12 月 -11

于 2020-12-09T19:39:53.877 回答