Java 打印日历

Java 打印日历,java,calendar,Java,Calendar,我知道如何创建像这样的普通日历 代码: 输出: 年份:2014年 月份:2 日期:6 2014-02-06 但如何显示给定月份和年份的日历,使其看起来像: July 2005 S M T W Th F S 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 我是java新手,想知道

我知道如何创建像这样的普通日历

代码:

输出: 年份:2014年 月份:2 日期:6 2014-02-06

但如何显示给定月份和年份的日历,使其看起来像:

July 2005
   S  M  T  W Th  F  S
                 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 
我是java新手,想知道如何用上面的方法来做。任何帮助都会很好! 提前感谢

您可以这样做:

Calendar calendar = new GregorianCalendar(2014, 1, 06);
calendar.set(Calendar.DAY_OF_MONTH, 1); //Set the day of month to 1
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); //get day of week for 1st of month
int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

//print month name and year
System.out.println(new SimpleDateFormat("MMMM YYYY").format(calendar.getTime()));
System.out.println(" S  M  T  W  T  F  S");

//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++) {
        System.out.printf("%2d ", dayOfMonth);
        dayOfMonth++;
    }
    System.out.println();
}

java
日历
不是一个月的表示,而是处理日期的“工具”。您必须实现完整的逻辑才能获得类似于
cal
的输出您想在控制台、网页或桌面应用程序中显示这种日历吗?您使用的
Calendar
类只是用于表示和转换时间,而不是以整洁的方式显示时间。根据您正在开发的应用程序的不同,可能有十几个库可以处理这项功能。您的目标是开发一个简单的控制台应用程序吗(根据提供的代码判断)?@rc您是否可以发布一个链接或类似的东西,从这开始会很有帮助?@tom我想在IDE中为我正在做的事情制作日历。这不是它的工作方式,给我们一些努力,解释一下你被困的地方,你会在这里找到帮助。
Calendar calendar = new GregorianCalendar(2014, 1, 06);
calendar.set(Calendar.DAY_OF_MONTH, 1); //Set the day of month to 1
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); //get day of week for 1st of month
int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

//print month name and year
System.out.println(new SimpleDateFormat("MMMM YYYY").format(calendar.getTime()));
System.out.println(" S  M  T  W  T  F  S");

//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++) {
        System.out.printf("%2d ", dayOfMonth);
        dayOfMonth++;
    }
    System.out.println();
}
February 2014
 S  M  T  W  T  F  S
                   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