- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要以年、月、日和秒为单位计算年龄,我使用 jcalendar 来获取用户输入,但我不断收到 DateTimeParseException 错误,有人可以告诉我如何解决这个问题吗?
JDateChooser dateChooser = new JDateChooser();
dateChooser.setDateFormatString("yyyy-MM-dd HH:mm:ss");
dateChooser.setBounds(419, 89, 175, 20);
frame.getContentPane().add(dateChooser);
final String start = (((JTextField)dateChooser.getDateEditor().getUiComponent()).getText());
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime startDate = LocalDateTime.parse(start ,format);
LocalDateTime endDate = LocalDateTime.now();
JButton btnNewButton = new JButton("Years");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(null, ChronoUnit.YEARS.between(startDate, endDate));
}
});`
这是错误。
java.time.format.DateTimeParseException: Text '' could not be parsed at index 0
at java.time.format.DateTimeFormatter.parseResolved0(Unknown Source)
at java.time.format.DateTimeFormatter.parse(Unknown Source)
at java.time.LocalDateTime.parse(Unknown Source)
完整代码
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.RootPaneContainer;
import java.awt.Font;
import javax.swing.JList;
import javax.swing.JPasswordField;
import javax.swing.JComboBox;
import javax.swing.plaf.RootPaneUI;
import com.toedter.calendar.JCalendar;
import com.toedter.calendar.JDateChooser;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.im.InputContext;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.text.ParseException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import com.toedter.components.JLocaleChooser;
import java.util.Date;
import java.util.Locale;
import java.awt.event.InputMethodListener;
import java.awt.event.InputMethodEvent;
public class Frame1 {
private JFrame frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
Frame1 window = new Frame1();
window.frame.setVisible(true);
}
});
}
/**
* Create the application.
*/
public Frame1() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.getContentPane().setLocale(Locale.US);
frame.setBounds(100, 100, 901, 623);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JDateChooser dateChooser = new JDateChooser();
dateChooser.setDateFormatString("yyyy-MM-dd HH:mm:ss");
dateChooser.setBounds(419, 89, 175, 20);
frame.getContentPane().add(dateChooser);
final String start = (((JTextField)dateChooser.getDateEditor().getUiComponent()).getText());
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime startDate = LocalDateTime.parse(start ,format);
LocalDateTime endDate = LocalDateTime.now();
JButton btnNewButton = new JButton("Years");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(null, ChronoUnit.YEARS.between(startDate, endDate));
}
});
btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 18));
btnNewButton.setBounds(55, 366, 200, 52);
frame.getContentPane().add(btnNewButton);
JButton btnNewButton_1 = new JButton("Months");
btnNewButton_1.setFont(new Font("Tahoma", Font.PLAIN, 18));
btnNewButton_1.setBounds(326, 367, 200, 50);
frame.getContentPane().add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("Days");
btnNewButton_2.setFont(new Font("Tahoma", Font.PLAIN, 18));
btnNewButton_2.setBounds(590, 367, 200, 50);
frame.getContentPane().add(btnNewButton_2);
JButton btnNewButton_3 = new JButton("Hours");
btnNewButton_3.setFont(new Font("Tahoma", Font.PLAIN, 18));
btnNewButton_3.setBounds(55, 472, 200, 50);
frame.getContentPane().add(btnNewButton_3);
JButton btnNewButton_4 = new JButton("Seconds");
btnNewButton_4.setFont(new Font("Tahoma", Font.PLAIN, 18));
btnNewButton_4.setBounds(326, 472, 200, 50);
frame.getContentPane().add(btnNewButton_4);
JButton btnNewButton_5 = new JButton("Milliseconds");
btnNewButton_5.setFont(new Font("Tahoma", Font.PLAIN, 18));
btnNewButton_5.setBounds(590, 472, 200, 50);
frame.getContentPane().add(btnNewButton_5);
JLabel lblNewLabel = new JLabel("calculate your age...");
lblNewLabel.setFont(new Font("Tahoma", Font.ITALIC, 22));
lblNewLabel.setBounds(310, 268, 403, 50);
frame.getContentPane().add(lblNewLabel);
JLabel lblVoerJeGeboorte = new JLabel("insert age");
lblVoerJeGeboorte.setFont(new Font("Tahoma", Font.ITALIC, 16));
lblVoerJeGeboorte.setBounds(226, 83, 272, 26);
frame.getContentPane().add(lblVoerJeGeboorte);
}
}
最佳答案
当您解析日期时,您需要处理异常。
将您用来解析日期或/和时间的代码放在 try..catch
block 中,它不会显示错误!
try{
dateChooser.setDateFormatString("yyyy-MM-dd HH:mm:ss");
dateChooser.setBounds(419, 89, 175, 20);
frame.getContentPane().add(dateChooser);
final String start = (((JTextField)dateChooser.getDateEditor().getUiComponent()).getText());
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime startDate = LocalDateTime.parse(start ,format);
LocalDateTime endDate = LocalDateTime.now();
}
catch(ParseException e){
e.printStackTrace();
}
关于java - 尝试从 jcalendar 获取日期时出现 DateTimeParseException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28925957/
是否可以在 toedter 的 JCalendar 中选择多天?就像我可以在日历中突出显示 2 或 3 天,然后在使用按钮触发事件后突出显示这些天。 或者我应该使用 JTable 作为日历更好吗? 最
我正在开发一个使用 JCalendar 的旧应用程序。是否可以在不同时区操作 JCalendar?这个包的内部似乎假设了本地时区。我们的应用程序假定 GMT,因此我们希望通过 com.toedter.
我正在使用 Swing 为不受支持的语言开发桌面应用程序。 我有自己的属性文件。我将它用于应用程序中的消息。我还使用我的文件调用 JCalendar 的 setLocale() 方法。但由于我不知道月
所以我有这个 @Override public void propertyChange(PropertyChangeEvent evt) { Date
String date =rs.getString(10); ((JTextField)fieldClose.getDateEditor().getUiComponent()).setText
在我的项目中,我使用 com.toedter.calendar.JCalendar 类。但是我不知道如何在选择日期时获得日期。 JDateChooser 和 JXDatePicker 满足了我的需求。
就我而言,我想禁用或突出显示 Java 日历中的日期。我使用了 JCalendar 和 DateChooserCombo 但找不到方法。最后,我尝试了下面的代码,但也没有成功。 例如:我想禁用从 14
我有一个带有 JCalendar 的简单 Java 程序。我需要知道我的 JCalendar calendario 是否为空,这意味着用户是否选择了日期。我正在考虑像 calendario.isEmp
我如何向 jcalendar 添加 Action 监听器?我想在一天中单击时获取日期,因此我将在 jtextfield 上显示整个日期。我已经尝试过类似的操作,但是当我点击一天时它什么也没做。
我有一个 3D 数组,其中包含 38 年、12 个月和每个月的 31 个条目(无论该月有多少天)。像这样:array[38][12][31]。我还有一个 JCalendar,它现在除了看起来很漂亮之外
我遵循代码 here在 Toedter 的 Calendar 中设置特定日期的颜色。我现在面临的问题是它没有突出显示正确的单元格。在我的示例中,我使用了 6 月 14 日和 15 日,但突出显示了 8
我尝试在 JCalendar 中以不同的颜色设置特定日期,具体取决于我的数据库中是否有针对该日期的计划,该日期在数据库中存储为“yyyy-MM-dd”,我已经看到stackOverflow 上有类似的
我在 JCalendar 中设置自定义一周第一天时遇到问题。如果我更改区域设置,一周的第一天确实会改变。但是,更改基础日历中一周的第一天没有任何效果。 这是一个简短的演示代码: public clas
我在更改 JCalendar 中特定日期的颜色时遇到问题。在某些情况下,我可以正确更改日期面板的颜色,如下所示: 它正确突出显示了我从数据库中检索到的 10 月 5 日和 10 月 13 日。 但大多
我试图限制用户只选择今天之后的日期,或者选择另一个Date之后的日期我在 JCalendar API 上看到可以帮助我的东西,但我什么也没找到..我该怎么做? 最佳答案 我认为组件上没有直接的方法可以
我想使用两个 JCalendar,一个使用 Calendar.getInstance() 接收实际日期,另一个使用相同的日期但比第一个多一个月。例如: Jcalendar1 = 05/04/2014J
我将 jCalendar 加载到日历,然后使用该日期作为索引,但问题是每个月的日期都不同,因此我无法选择。当我点击 21 时,我选择了 10。 Calendar cal = Calendar.g
我需要更改 JCalendar 应用程序中选定日期的颜色。问题是:我看了一下JCalendar的源代码,没有看到任何改变颜色的方法。 让我看看我是否可以在这里说得更清楚...... JCalendar
//我正在 swing 中创建自定义 jcalender //我遇到有关日期设置的问题//即实际月份从星期二开始,从星期三开始//我发现有关在日历模型中设置值的问题 //上面的代码运行良好,但在显示实
我的程序使用JDialog打开表单,在表单中我想使用JCalendar让用户选择日期并让我将其用于其他用途之后的方法。 我已经下载了JCalendar库。我读了一些示例代码,但仍然不知道该怎么做。我有
我是一名优秀的程序员,十分优秀!