LocalDate date4 = ZonedDateTime .parse(date, DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH)) .toLocalDate(); java.sql.Date date5 = java.sql.Date.valueOf(date4);
Я использую современные классы в пакете
java.time
. Вы заметили, что код не только проще, как только вы знакомы с текстом нового стиля, но и понятным.Если вы хотите быть на 100% современным, вы также должны проверить будет ли ваш последний MySQL JDBC-драйвер не принимать
LocalDate
напрямую без преобразования вjava.sql.Date
. Это необходимо.Несколько примечаний к примечанию
Locale.ROOT
для языковой нейтральной локали (это говорит по-английски). Europe/Bucharest
, либо смещение от UTC, как +02:00
. Эти точки действительны независимо от того, используете ли вы DateTimeFormatter
или SimpleDateFormat
.
Если вы не можете или не хотите переходить к рекомендуемым новым классам, исправление для вашего кода:
SimpleDateFormat formatnow
= new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
SimpleDateFormat formatneeded = new SimpleDateFormat("yyyy-MM-dd");
Я использую строчные буквы zzz
, так как это документируется в соответствии с трехбуквенным именем часового пояса, я знаю, что работает верхний регистр ZZZ
. Я добавил локаль. И, возможно, самое главное, в нужном формате я изменил YYYY
(недельный год) на yyyy
(календарный год) и DD
(день года) на dd
(день месяца). Все эти буквы находятся в документации .
Я не знаю, что ваша функция должна делать, потому что нет объяснений, но для решения этого вида линейного уравнения с ограничениями вы можете использовать linprog
% define the constraints
% Every constraints have this format: x1*x(1) + x2*x(2) ≤ n
% Where x(1) and x(2) are your variable and x1,x2 and n are integers.
A = [1 3
3 4
-1 0
0 -1
-1 0];
b = [60 120 -10 0 0];
% define the objective function
f = [-3 -5];
% solve
x = linprog(f,A,b)
Результат:
x =
24
12
Заметил, что я поменял знак целевой функции, чтобы максимизировать решение (по умолчанию linprog минимизирует решение)