在我的应用中,用户输入日期,然后输入时间。在日期弹出一个日历时,会弹出一个时钟。要将它们存储在数据库中,需要将它们组合成一个日期时间,我将它们转换为int。我有fmtDate,它有日期和有时间的fmtTime。我将如何组合它们。
用户点击文本框并弹出日历。用户选择他们想要的日期,即fmtDate。
用户点击的下一个文本框,弹出一个时钟。用户选择他们想要的日期,这是fmtTime。
我想将它们连接到newTime所以fmtDate然后fmtTime。所以我可以使用 int currentTime =(int)((newTime).toMillis(true)/ 1000); 并将其存储在数据库中
答案 0 :(得分:1)
我建议您不要尝试将两个字符串转换为DateTime对象。
1)创建一个java.util.Calendar
对象:
Calendar cal = Calendar.getInstance();
2)当用户通过点击日历选择日期时,除了将格式化日期打印到文本字段外,还要将此日期设置为日历对象:
cal.set(Calendar.DATE, <date>);
cal.set(Calendar.MONTH, <month>);
cal.set(Calendar.YEAR, <year>);
3)当用户通过点击时钟选择时间时,除了将格式化的时间打印到文本字段外,还要将此时间设置到Calendar对象中:
cal.set(Calendar.HOUR_OF_DAY, <hour>);
cal.set(Calendar.MINUTE, <minute>);
cal.set(Calendar.SECOND, <second>);
4)当您需要将日期/时间插入数据库时,只需从日历中创建java.util.Timestamp
对象:
Timestamp tmstmp = new Timestamp(cal.getTimeInMillis);
5)现在,假设你有一个这样的表:
CREATE TABLE my_table (
n_id INTEGER,
dt_time TIMESTAMP
);
然后你可以像这样插入新创建的时间戳:
Connection con = DriverManager.getConnection(...);
String sql = "INSERT INTO my_table (n_id, dt_time) VALUES (?, ?)";
PreparedStatememt stmt = con.prepareStatement(sql);
stmt.setInteger(1, 1);
stmt.setTimestamp(2, tmstmp);
stmt.executeUpdate();
答案 1 :(得分:0)
假设您正在创建java.util.Date
个对象:
Date date, time;
...
Calendar c = Calendar.getInstance();
c.setTimeInMillis(date.getTime() + time.getTime());
Java 6的API时间非常糟糕。如果您有额外的时间操作,我强烈建议您使用Joda Time。