對于使用Java Date進行格式化的新手甚至對于使用Java Date進行格式化的有經驗的Java開發人員而言,可能有些棘手的事情是使用SimpleDateFormat規范日期/時間格式。
SimpleDateFormat
的基于類級別的Javadoc的文檔非常詳盡,涵蓋了表示日期/時間的各個組成部分的模式。 但是,除非人們仔細閱讀并理解了這些不同的模式,否則要記住月份的小寫字母“ d”和一年中的大寫字母“ D”之間的區別或者記住是否是小寫字母“ m”或“大寫字母“ M”使用了幾個月而不是幾分鐘。 在本文中,我看一個用JavaFX編寫的簡單應用程序,它使開發人員可以快速嘗試任意模式,以查看
SimpleDateFormat
如何在給定任意模式的情況下呈現當前日期/時間。 從理論上講,開發人員可以使用這個簡單的工具快速確定其日期/時間模式的效果,但這實際上是應用JavaFX的一個借口。 下面的代碼清單包含完整的基于JavaFX 2.x的應用程序。
package dustin.examples;import java.text.SimpleDateFormat;
import java.util.Date;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFieldBuilder;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;/*** JavaFX application allowing for testing and demonstration of various String* formats for date/time.* * @author Dustin*/
public class DateTimeStringFormatDemonstrator extends Application
{/*** Generate the application's main pane.* * @return Main pane for the application.*/private Pane generateMainPane(){final VBox vbox = new VBox();final TextField dateTimeFormatField =TextFieldBuilder.create().prefWidth(350).alignment(Pos.CENTER).promptText("Enter DateFormat").build();vbox.getChildren().add(dateTimeFormatField);final TextField formattedDateField =TextFieldBuilder.create().prefWidth(350).alignment(Pos.BASELINE_CENTER).promptText("Date Output Goes Here").build();formattedDateField.setEditable(false);final Button applyButton = new Button("Apply Format");applyButton.setPrefWidth(350);applyButton.setOnMousePressed(new EventHandler<MouseEvent>(){@Overridepublic void handle(MouseEvent mouseEvent){try{final SimpleDateFormat sdf =new SimpleDateFormat(dateTimeFormatField.getText());formattedDateField.setText(sdf.format(new Date()));formattedDateField.setAlignment(Pos.CENTER);}catch (Exception ex){formattedDateField.setText("ERROR");formattedDateField.setAlignment(Pos.CENTER);}formattedDateField.setAlignment(Pos.BASELINE_CENTER);}});vbox.getChildren().add(applyButton);vbox.getChildren().add(formattedDateField);return vbox;}/*** The method overridden from Application for starting the application.* * @param stage Primary stage.* @throws Exception Exceptions throwing during execution of JavaFX application.*/@Overridepublic void start(final Stage stage) throws Exception{stage.setTitle("JavaFX Date/Time String Format Presenter");final Group group = new Group();group.getChildren().add(generateMainPane());final Scene scene = new Scene(group, 350, 65, Color.DARKKHAKI);stage.setScene(scene);stage.show();}/*** Main function for running date/time format JavaFX application.* * @param arguments Command-line arguments; none expected.*/public static void main(final String[] arguments){Application.launch(arguments);}
}
上面顯示的基于JavaFX 2的簡單應用程序使您可以輕松地嘗試不同的日期/時間格式模式,以查看
SimpleDateFormat
將如何處理每種模式。 接下來顯示在2012年5月8日星期二晚上使用的一系列此類。 這些示例演示了使用SimpleDateFormat
幾個關鍵方面: - 大寫字母“ M”用于幾個月,小寫字母“ m”用于分鐘。
- “ M”字符的數量表示月份的表示形式(例如:5月的5、05或“ 5月”)。
- 大寫字母“ D”表示年份中的日期(自1月1日開始),小寫字母“ d”表示月份中的日期(自5月1日開始)。
- 兩個'y'或'Y'數字代表2位數字的年份,但是3或4個'Y'或'y'數字可用于4位數字的年份。









本博客文章中突出顯示的簡單示例演示了JavaFX的簡單性,并提供了JavaFX如何提供圖形界面以使Java應用程序更直觀的示例。 作為其一部分,將演示JavaFX中的鼠標事件處理以及使用構建器的常見JavaFX習慣用法 。 此應用程序的實際用途是快速輕松地確定由
SimpleDateFormat
為給定模式提供的表示形式。 參考:來自JCG合作伙伴 Dustin Marx 的基于JavaFX的SimpleDateFormat演示器,來自Inspired by Actual Events博客。
翻譯自: https://www.javacodegeeks.com/2012/05/javafx-based-simpledateformat.html