快速背景:
我在Eclipse中为预订应用程序创建了一个GUI。在它上面,我有多个组合框用于到达和离开日期(月,日,年 - 两者)。我检索了信息并将其绑定到String变量,因此它看起来像这样:12/04/2014。
问题:
我一直在网上搜索很长一段时间,但似乎找不到任何清楚的东西。
请不要推荐任何附加组件或界面工具,因为我必须手动编写所有内容,只提供现成的内容(如果有意义的话)。
谢谢!
---编辑---
我尝试了很多下面提到的事情......
'今天的日期=新的日期()'在新的日期()下给我一条红线,要求参数为int或long。
以下是我从组合框中汇总日期时的代码。 dateFormat.parse(holder)获得一个红色下划线,提示使用try / catch添加throws声明或环绕声。以下变量的数据类型是... index(int)。 holder(String)。到达/离开(java.util.Date) - 无论出于何种原因,即使使用导入日期也不会接受日期,尽管它在我的酒店类中。奇怪,是的,但不是我的主要焦点。
// Assignments
index = view.getArriveMonthIndex() + 1; // Arrival date
holder = index + "/" + view.getArriveDay() + "/" + view.getArriveYear();
arrival = dateFormat.parse(holder);
index = view.getDepartMonthIndex() + 1; // Departure date
holder = index + "/" + view.getDepartDay() + "/" + view.getDepartYear();
departure = dateFormat.parse(holder);
还有其他的东西可能会提及/显示..在我课程的最开始,这是我一直在玩/尝试过的。
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy", Locale.US);
Calendar todaysDate = Calendar.getInstance();
String today = dateFormat.format(todaysDate.getTime());
^^刚刚测试了最后一部分,它确实有效。
我继续为我的到达/离开变量加下划线的建议。我的方法现在抛出ParseException。还没有找到一个好的描述 - 这究竟是什么意思? (非常新的,如果你不能告诉) - 备份。将其改回原来的状态。这种方式需要在我调用reserveHotel()方法时抛出/捕获。
答案 0 :(得分:1)
您应该使用原始Date
对象作为UI组件中模型的数据,并使用渲染器显示数据的值,最好是尊重用户的区域设置。
这样,您就不必在数据类型之间进行转换
仔细查看How to Use Combo Boxes了解更多详情
例如......
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class TestCombos {
public static void main(String[] args) {
new TestCombos();
}
public TestCombos() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
DefaultComboBoxModel model = new DefaultComboBoxModel();
Calendar cal = Calendar.getInstance();
for (int index = 0; index < 100; index++) {
model.addElement(cal.getTime());
cal.add(Calendar.DATE, 1);
}
JComboBox comboBox = new JComboBox(model);
comboBox.setRenderer(new DefaultListCellRenderer(){
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
if (value instanceof Date) {
value = DateFormat.getDateInstance(DateFormat.SHORT).format((Date)value);
}
return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
}
});
comboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Object value = ((JComboBox)e.getSource()).getSelectedItem();
if (value instanceof Date) {
System.out.println("You have selected a Date value of " + value);
} else {
System.out.println("You selected something else");
}
}
});
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridBagLayout());
frame.add(comboBox);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
今天的日期就像new Date()
答案 1 :(得分:1)
尝试使用SimpleDateFormat类指定日期掩码(“MM / dd / yyyy”)并将字符串转换/解析为Date
。
然后与创建为Date
Date dt = new Date ();
进行比较
请参阅http://docs.oracle.com/javase/6/docs/api/java/util/Date.html#after(java.util.Date)
答案 2 :(得分:0)
您可以使用以下内容将字符串解析为日期:
Date date = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(YOURDATE);
您可以使用以下内容获取今天的日期:
Date date = new Date();
答案 3 :(得分:0)
使用像这样的java SimpleDateFormat:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy");
String dateString = "12/04/2014";
Date myDate = simpleDateFormat.parse(dateString);
今天的日期可以通过以下方式获得:
Date today = new Date();