如何组合数据时间

时间:2012-03-01 18:08:23

标签: android datetime concat

在我的应用中,用户输入日期,然后输入时间。在日期弹出一个日历时,会弹出一个时钟。要将它们存储在数据库中,需要将它们组合成一个日期时间,我将它们转换为int。我有fmtDate,它有日期和有时间的fmtTime。我将如何组合它们。

用户点击文本框并弹出日历。用户选择他们想要的日期,即fmtDate。

用户点击的下一个文本框,弹出一个时钟。用户选择他们想要的日期,这是fmtTime。

我想将它们连接到newTime所以fmtDate然后fmtTime。所以我可以使用      int currentTime =(int)((newTime).toMillis(true)/ 1000); 并将其存储在数据库中

2 个答案:

答案 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