21xrx.com
2024-12-23 00:52:46 Monday
登录
文章检索 我的文章 写文章
如何使用Java显示日历
2023-07-07 11:00:23 深夜i     --     --
Java 日历 显示 操作 日期

Java是一种流行的编程语言,可用于构建各种各样的应用程序,包括日历应用程序。Java有许多内置的日期和时间类,这些类可以帮助您管理日期和时间数据,并在显示日历方面非常有用。

下面是使用Java显示日历的几种方法:

1.使用Calendar类

Java的Calendar类是处理日期和时间的一个基本工具。它提供了许多方法,可用于创建、操作和显示日历。以下是一个简单的示例,它使用Calendar类来显示当前年份和月份的日历:


import java.util.Calendar;

public class DisplayCalendar {

  public static void main(String[] args) {

   // create calendar object

   Calendar calendar = Calendar.getInstance();

   // get current year and month

   int year = calendar.get(Calendar.YEAR);

   int month = calendar.get(Calendar.MONTH);

   // set calendar to first day of current month

   calendar.set(Calendar.DAY_OF_MONTH, 1);

   // get day of week for first day of month

   int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

   // print calendar header

   System.out.println("  " + calendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Calendar.DEFAULT) + " " + year);

   System.out.println("Su Mo Tu We Th Fr Sa");

   // print blank spaces before first day of month

   for (int i = 1; i < dayOfWeek; i++) {

     System.out.print("  ");

   }

   // print days of month

   for (int i = 1; i <= calendar.getActualMaximum(Calendar.DAY_OF_MONTH); i++) {

     System.out.printf("%2d ", i);

     if ((dayOfWeek + i - 1) % 7 == 0) {

      System.out.println();

     }

   }

  }

}

该程序使用了Calendar类的许多方法,如getInstance()、get()、set()和getActualMaximum()等。它首先获取当前的年份和月份,然后将日历设置为该月份的第一天,并计算出第一天是星期几。接下来,程序打印出月份和年份的标题,以及日历表头。然后,它打印出第一天前面的空格,以及该月的所有日期。

2.使用GregorianCalendar类

Java的GregorianCalendar类是Calendar类的子类,它提供了更多的日期和时间功能。以下是一个简单的示例,它使用GregorianCalendar类来显示指定年份和月份的日历:


import java.util.GregorianCalendar;

public class DisplayCalendar {

  public static void main(String[] args) {

   // create calendar object

   GregorianCalendar calendar = new GregorianCalendar(2021, 6, 1);

   // print calendar header

   System.out.println("  " + calendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Calendar.DEFAULT) + " " + calendar.get(Calendar.YEAR));

   System.out.println("Su Mo Tu We Th Fr Sa");

   // print blank spaces before first day of month

   for (int i = 1; i < calendar.get(Calendar.DAY_OF_WEEK); i++) {

     System.out.print("  ");

   }

   // print days of month

   for (int i = 1; i <= calendar.getActualMaximum(Calendar.DAY_OF_MONTH); i++) {

     System.out.printf("%2d ", i);

     if ((calendar.get(Calendar.DAY_OF_WEEK) + i - 1) % 7 == 0) {

      System.out.println();

     }

   }

  }

}

该程序与前一个程序非常相似,但它使用GregorianCalendar类而不是Calendar类。它创建一个GregorianCalendar对象,该对象表示2021年7月1日。然后,它打印出月份和年份的标题,以及日历表头。接下来,程序打印出第一天前面的空格,以及该月的所有日期。

3.使用JavaFX

除了使用Calendar类和GregorianCalendar类外,您还可以使用JavaFX库来显示日历。以下是一个简单的示例,它使用JavaFX来显示当前年份和月份的日历:


import javafx.application.Application;

import javafx.scene.Scene;

import javafx.scene.control.DatePicker;

import javafx.scene.layout.VBox;

import javafx.stage.Stage;

public class DisplayCalendar extends Application {

  public void start(Stage primaryStage) {

   // create date picker and set it to current month

   DatePicker datePicker = new DatePicker();

   datePicker.setValue(java.time.LocalDate.now().withDayOfMonth(1));

   // set date picker to show only month and year

   datePicker.setShowWeekNumbers(false);

   datePicker.setConverter(new javafx.util.converter.LocalDateStringConverter(java.time.format.DateTimeFormatter.ofPattern("MM/yyyy"), java.time.format.DateTimeFormatter.ofPattern("MM/yyyy")));

   datePicker.setPromptText("MM/yyyy");

   // create vbox and add date picker to it

   VBox vbox = new VBox();

   vbox.getChildren().add(datePicker);

   // create and show scene

   Scene scene = new Scene(vbox, 250, 250);

   primaryStage.setScene(scene);

   primaryStage.show();

  }

  public static void main(String[] args) {

   launch(args);

  }

}

该程序使用了DatePicker类,它是JavaFX库中的一个控件,可用于选择日期。该程序创建一个DatePicker对象,并将其设置为当前月份的第一天。然后,它将DatePicker设置为只显示月份和年份,并设置格式化程序以显示月份和年份。最后,程序创建一个VBox并将DatePicker添加到其中,并创建一个场景并将其显示到舞台上。

以上是使用Java显示日历的几种方法。无论您选择哪种方法,使用Java来管理和显示日期和时间都是非常容易和方便的。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复