当前位置: 首页 > 知识库问答 >
问题:

在java编程中制作一个月专用日历的有效方法

越心水
2023-03-14

我需要一些帮助;我已经被这种情况困了一段时间了。我的目标是显示2021年8月的日历表单。我这里有密码。我只需要八月份,因为我只想发布一个月的日历,让用户看到开课的日期。它显示日历,但我觉得它有一个更有效的方式来编写这种类型的程序,但我不知道如何。你能帮帮我吗?

下面是我的代码:

public class Calendar {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        System.out.println("\t\tMONTH OF AUGUST 2021");
        System.out.println("–––––––––––––––-------------------------––––––––––––––");
        System.out.println("\nSun\tMon\tTue\tWed\tThu\tFri\tSat\n");
        System.out.println("–––––––––––––––-------------------------––––––––––––––");
        int [][]num={{1,2,3,4,5,6,7},{8,9,10,11,12,13,14},{15,16,17,18,19,20,21},{22,23,24,25,26,27,28},{29,30,31,1,2,3,4}};
      
        for (int i=1; i<num.length;i++){
            for(int j=8; j<num[i].length; j++){
                num[i][j]=i+j;
            }
        }
        for(int[] a: num){
            for(int i:a){
                System.out.print(i + "\t");
            }
            System.out.println("\n");
        }
    }
}

共有1个答案

陶征
2023-03-14

要在控制台窗口中显示日历(哪个月应该无关紧要),您可以使用以下java方法:

public static void displayConsoleCalendar(int day, int month, int year, 
                                          boolean... useColorCodes) {
    boolean useColor = false;
    if (useColorCodes.length > 0) {
        useColor = useColorCodes[0];
    }
    String red = "\033[0;31m";
    String blue = "\033[0;34m";
    String reset = "\033[0m";
    java.util.Calendar calendar = new java.util.GregorianCalendar(year, month - 1, day + 1);
    calendar.set(java.util.Calendar.DAY_OF_MONTH, 1); //Set the day of month to 1
    int dayOfWeek = calendar.get(java.util.Calendar.DAY_OF_WEEK); //get day of week for 1st of month
    int daysInMonth = calendar.getActualMaximum(java.util.Calendar.DAY_OF_MONTH);

    //print month name and year
    System.out.println(new java.text.SimpleDateFormat("MMMM YYYY").format(calendar.getTime()));
    System.out.println((useColor?blue:"") + " S  M  T  W  T  F  S" + (useColor?reset:""));
    
    //print initial spaces
    String initialSpace = "";
    for (int i = 0; i < dayOfWeek - 1; i++) {
        initialSpace += "   ";
    }
    System.out.print(initialSpace);

    //print the days of the month starting from 1
    for (int i = 0, dayOfMonth = 1; dayOfMonth <= daysInMonth; i++) {
        for (int j = ((i == 0) ? dayOfWeek - 1 : 0); j < 7 && (dayOfMonth <= daysInMonth); j++) {
            if (dayOfMonth == day && useColor) {
                System.out.printf(red + "%2d " + reset, dayOfMonth);
            }
            else {
                System.out.printf("%2d ", dayOfMonth);
            }
            dayOfMonth++;
        }
        System.out.println();
    }
}

如果您的终端支持转义颜色代码,那么您提供的日期将在日历中为红色。这种方法也照顾到闰年。只需提供day、month和year的整数值作为参数即可。应用颜色代码的最后一个参数是可选的。

如果您想要显示八月份,并且希望该月份的20日用红色突出显示,那么您可以执行以下调用:

displayConsoleCalendar(20, 8, 2021, true);
 类似资料:
  • 我正在使用日历视图来选择产品交付日期。我想在日历视图中仅显示当前日期的一个完整月份? 比如说: 今天的日期:2019年4月4日-日历视图应仅显示至2019年5月31日,不应显示上个月。 另一个例子:如果今天的日期是:2019年8月15日——日历视图应该只显示到2019年9月30日,而不应该显示上个月。 这可能吗?如果是这样的话,当我点击箭头时,如何显示默认日历视图是显示所有年份的正负?

  • 问题内容: 我正在使用以下代码 输出是 添加到 一月 是给 月 月。如果我们在当前日期加上30天,则可能返回正确的输出。但我想显示 2 月。有人可以帮我吗.. 问题答案: 您可以看到+1设置字段添加的日期与您的日期不同(从输出中观察到)。 如果你想几个月,那么使用代码

  • 问题内容: 我正在尝试往返日期,该日期将有以前的日期,并且将有本月的第一个日期。一月份将会如此,依此类推。如何正确获取当月的第一个日期?我做不到。 问题答案: 尝试 更新(自Java 8以来 ):

  • 我正在使用amsul DateTimePicker:https://amsul.ca/pickadate.js/date/

  • 问题内容: 在中,将1月定义为第0个月,而不是第1个月。是否有任何特定原因? 我已经看到很多人对此感到困惑… 问题答案: 它只是Java日期/时间API的一团糟。列出问题所在将花费很长时间(而且我确定我不知道其中一半是问题)。诚然,处理日期和时间是很棘手的,但是无论如何都是这样。 帮个忙,改用Joda Time或JSR-310。 编辑:至于原因-如其他答案所述,这很可能是由于旧的C API引起的,

  • 我需要一个Android日历视图像附上的照片。我已经尝试使用这个库https://github.com/alamkanak/android-week-view作为日历视图。这是一个固定的静态事件在日历添加仅。无法在此库日历视图中添加动态事件。有没有人可以推荐任何一个自定义库在Android。 日历视图库代码示例Android-Week-View: 我在这个图书馆所尝试的: 注: 我需要在此日历视图