2012-03-01 2 views
1

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

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

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

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

+0

Можете ли вы дать мне две строки и какой формат Будьте ясны Редактировать свой вопрос Что вы и что хотите –

+0

@Samir Я добавил более подробную информацию. Надеюсь, что это яснее – Aaron

+0

Nop дать строку, которую вы хотите конвертировать в миллисе –

ответ

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

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

Предполагается, что он будет отображаться как забавный номер? Я использовал точки останова, а tmpstp не похож на комбинацию даты и времени. – Aaron

+0

Временная метка будет длинным числом - миллисекундами с 1 января 1970 года. Я добавляю две строки к моему ответу, чтобы показать, как их использовать. –

0

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

Date date, time; 

...

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

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

Смежные вопросы