У меня есть таблица базы данных MySQL, в которой есть список рейсов, который содержит, помимо прочего, дату и время посадки ( отметка времени ) в стране источника, и я хочу добавить дату и время посадки (также timestamp ) к нему.
У меня есть другая таблица, в которой содержится список аэропортов, включая их название, страну и часовой пояс.
Я создал функцию, которая получает часовой пояс в зависимости от названия аэропорта называется getAirportTimeZone . Теперь, посмотрев на stackoverflow, я обнаружил этот вопрос , который позволяет мне конвертировать из одного часового пояса в другой, поэтому, когда я попробовал его в основном классе, он работал нормально, но когда я пытаюсь реализовать его в методе в моем класс соединения, где я мог бы позже использовать этот метод, когда я пытаюсь создать новый полет, я получаю ошибку Eclipse: Этот метод должен возвращать результат типа Timestamp .
Вот как я это попробовал в моем основном классе:
String s = class1.getAirportTimeZone("Gabes Airport");
System.out.println(s);
DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ROOT);
df1.setTimeZone(TimeZone.getTimeZone(s));
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ROOT);
df2.setTimeZone(TimeZone.getTimeZone(class1.getAirportTimeZone("Arcata Airport")));
try {
System.out.println(df1.format(df2.parse("2020-02-03 19:30:00")));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
А вот как функция в другом классе:
public String getAirportTimeZone(String airport) {
connect();
String sql="SELECT tz FROM airports WHERE name=?";
PreparedStatement statement;
String tz="";
try {
statement = connection.prepareStatement(sql);
statement.setString(1, airport);
ResultSet rs = statement.executeQuery();
while(rs.next()) {
tz = rs.getString("tz");
}
} catch (SQLException e) {
e.printStackTrace();
}
return tz;
}
public Timestamp conv(String airportName1, String airportName2, Timestamp ts1) {
DateFormat dfAirport1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ROOT);
dfAirport1.setTimeZone(TimeZone.getTimeZone(getAirportTimeZone(airportName1)));
DateFormat dfAirport2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ROOT);
dfAirport2.setTimeZone(TimeZone.getTimeZone(getAirportTimeZone(airportName2)));
try {
return Timestamp.valueOf(dfAirport2.format(dfAirport1.parse(ts1.toString())));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}