Запустить подход 2 с параметром командной строки -Djava.locale.providers=CLDR,COMPAT
. Например:
java -Djava.locale.providers=CLDR,COMPAT YourApp
Вывод:
blockquote>zoned fek long en-GB: 17 January 2019 zoned fek long es-ES: 17 de enero de 2019 zoned fek long zh-CN: 2019年1月17日 zoned fek long de-DE: 17. Januar 2019 zoned fek long fr-FR: 17 janvier 2019 zoned fek long it-IT: 17 gennaio 2019 zoned fek long ja-JP: 2019年1月17日 zoned fek long ko-KR: 2019년 1월 17일
Я обнаружил, что на моем Java 9 я не могу воспроизвести вашу проблему. С
FormatStyle.LONG
я получил2019年1月17日
для японского языка, где вы сообщили2019/01/17
. Java получает форматы даты как часть своих региональных данных из разных источников. Начиная с Java 8 данные локали из Unicode Common Locale Data Repository (CLDR) поставляются с Java, но по умолчанию используются собственные данные локали Java. Начиная с Java 9, данные CLDR используются по умолчанию. Итак, что я делаю с вышеуказанным параметром командной строки, я говорю вашей Java 8 использовать CLDR раньше, чем собственный Java. Собственные данные локали Java указываются как COMPAT.Другой вариант, конечно, это обновить до Java 9, 10 или 11. Это также даст вам результат, о котором вы просили.
Java 8 без опции командной строки
Невозможно добавить какую-либо дополнительную опцию в командной строке, так как это приложение будет запускаться в другой системе.
blockquote>Это прискорбно. Вы можете спросить еще раз. С другой стороны, опция командной строки рискует изменить поведение во всех частях этой другой системы, поэтому вы не сможете пройти через это.
Если ничего не помогает, напишите некоторые исключения для локалей, где
FormatStyle.LONG
не дает вам того, что требуется. Ответ Joop Eggen показывает один из способов сделать это.Как только менеджеры этой другой системы решат перейти на Java 9 или новее, если только они не используют опцию командной строки для использования
COMAPT
доCLDR
, данные локали изменятся, и у вас будет возможность упростить код.
Это кажется слишком простым, но похоже на то, в чем Вы нуждаетесь:
SELECT id,question FROM `questions`
WHERE `sort_order` > sort_order_variable
ORDER BY sort_order ASC
LIMIT 1
SELECT * FROM table_name WHERE sort_order > 5 ORDER BY sort_order ASC LIMIT 1
Можно сделать это с TOP
или LIMIT
:
SELECT TOP 1 * FROM faq_questions
WHERE sort_order > 5
ORDER BY sort_order ASC
но это не так изящно или портативно как
SELECT *
FROM faq_questions AS f1
LEFT JOIN faq_questions AS f2
ON f1.sort_order > f2.sort_order
AND f2.sort_order = 5
LEFT JOIN faq_questions AS f3
ON f3.sort_order BETWEEN f1.sort_order AND f2.sort_order
WHERE f3.id IS NULL
SELECT
id, question, sort_order
FROM faq_questions
WHERE sort_order in
(SELECT
MIN(sort_order)
FROM faq_questions
WHERE sort_order > ?);
Это, кажется, работает