【问题标题】:Can not retrieve date from JDateChooser in Java无法从 Java 中的 JDateChooser 中检索日期
【发布时间】:2011-07-20 10:48:18
【问题描述】:

我正在使用来自hereJDateChooser

但是,在控制台中显示日期时,我无法检索使用方法 setDateFormatString 设置的日期格式。

第一个标签显示从JDateChooser 检索的实际日期,而第二个标签显示我设置的格式。当我从JDateChooser 中选择日期时,我得到的日期为22-07-2011,如图所示。但是当我使用getDate 方法时,它会给我Fri Jul 22 00:00:00 GMT+05:30 2011 的日期。我只想要22-07-2011

这是我的代码。我正在使用 Netbeans IDE 7.0

public JDateChooser() {
    initComponents();
    dateChooser.setDateFormatString("dd-MM-yyyy");
}
private void btnDisplayDateActionPerformed(java.awt.event.ActionEvent evt) {
    String dateFromDateChooser = dateChooser.getDate().toString();
    lblDate.setText(dateFromDateChooser);
    lblDateFormat.setText(dateChooser.getDateFormatString().toString());
    System.out.println(dateFromDateChooser);
}
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            new JDateChooser().setVisible(true);
        }
    });
}

【问题讨论】:

  • toString() 始终以您在上面看到的格式返回日期。您将在 DateChooser 中设置的格式(即 INPUT 格式)与您想要输出到控制台的格式混淆了。你从没有内部格式的 DateChooser 中得到一个 Date 对象。如果要将其打印出来,则必须将日期格式化为字符串。下面的答案告诉你如何做。

标签: java swing netbeans datepicker jcalendar


【解决方案1】:

您可以使用 String.format 方法来获得想要的结果。

Date dateFromDateChooser = dateChooser.getDate();
String dateString = String.format("%1$td-%1$tm-%1$tY", dateFromDateChooser);

【讨论】:

  • 感谢您的帮助。它可以按照我的要求完美运行。再次感谢您
【解决方案2】:

试试这个

java.text.SimpleDateFormat fmt = new java.text.SimpleDateFormat("dd-MM-yyyy");
String formattedDate = fmt.format(dateChooser.getDate());

【讨论】:

    【解决方案3】:

    有两种选择

    1/您已经下载了代码源

        calDealDate.setPreferredSize(new Dimension(90, 23));
        calDealDate.setDateFormat(new SimpleDateFormat("dd.MM.yyyy"));
        calDealDate.setSpiningCalendarField(Calendar.DAY_OF_MONTH);
        calDealDate.setFont(new Font("SansSerif", Font.BOLD, 12));
        calDealDate.setBackground(AppVariables.fieldColor);
        calDealDate.addChangeListener(new ChangeListener() {
    
            @Override
            public void stateChanged(ChangeEvent e) {
                //here is your date depends of previous setings
            }
        });
        calDealDate.setToolTipText(" some tooltip text  ");
    

    2/ 你已经下载了 jar 文件,那么你必须从 API 中找到这个方法或等效方法

    编辑:也许我更愿意从代码源开始,只需将其导入项目中

    【讨论】:

    • 感谢您的回复。它有效。但是“Kainsin”解决方案更好,因为我只想以定义的格式打印它而没有别的。总之谢谢
    • @iOSAppDev - 好点子,mKorbel 偶尔会忘记理想的答案是 SSCCE 以及问题 :-)
    【解决方案4】:

    试试这个

       public void calendarExpale(){
        JPanel content = new JPanel();
        content.setLayout(new FlowLayout());
        final JTextField textField = new JTextField(15);
        JDateChooser chooser = new JDateChooser();
    
       chooser.setSize(15, 10);
      chooser.addPropertyChangeListener("date", new PropertyChangeListener() {
    @Override
    public void propertyChange(PropertyChangeEvent evt) {
    
        JDateChooser chooser = (JDateChooser)evt.getSource();
        SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:MM:SS");
        textField.setText(formatter.format(chooser.getDate()));
    }
      });
    
      content.add(textField);
        content.add(chooser);
    }
    

    【讨论】:

      【解决方案5】:

      使用String Format Method,它会帮助你以及如何使用它看看这个

      https://www.youtube.com/watch?v=FEM0BpZSXmU

      此链接与您想要的教程相同。

      【讨论】:

        猜你喜欢
        • 2019-12-09
        • 1970-01-01
        • 2023-03-13
        • 2020-04-10
        • 2012-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多