Как объединить данные - PullRequest
       13

Как объединить данные

1 голос
/ 01 марта 2012

В моем приложении пользователь вводит дату, а затем время.Для даты появляется календарь, а для времени - часы.Чтобы сохранить их в базе данных, нужно объединить их в одну дату и время, которое я конвертирую в int.У меня есть fmtDate, у которого есть дата, и у fmtTime есть время.Как бы я их объединил.

Пользователь нажимает на текстовое поле, и появляется календарь.Пользователь выбирает дату, которую он хочет, и это fmtDate.

В следующем текстовом поле, по которому пользователь нажимает, появляется всплывающее окно с часами.Пользователь выбирает дату, которую он хочет, и это fmtTime.

Я хотел бы объединить их в newTime так fmtDate и затем fmtTime.поэтому я могу использовать int currentTime = (int) ((newTime) .toMillis (true) / 1000);и сохранить его в базе данных

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Вместо того, чтобы пытаться преобразовать две строки в объект 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) Когда пользователь выбирает время, нажимая на часы, помимо печати отформатированного времени в текстовое поле, также установите это время в объекте «Календарь»:

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();
0 голосов
/ 01 марта 2012

Предполагается, что вы создаете java.util.Date объектов:

Date date, time;

...

Calendar c = Calendar.getInstance();
c.setTimeInMillis(date.getTime() + time.getTime());

В Java 6 действительно плохой APIЕсли у вас есть дополнительные временные операции, я настоятельно рекомендую использовать Joda Time .

...