Я могу избавиться от этой проблемы, и сейчас я не нашел на нее ответа.
Можно ли преобразовать DateFormat в DateTimeFormatter?
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yy HH:mm:ss", Locale.getDefault);
Я хочу сделать что-то подобное:
DateTimeFormatter.ofPattern((String)dateFormatter);
Или
(DateTimeFormatter)dateFormatter;
Или есть способ получить строку, которая делает формат в DateFormat?
Я хочу сделать это, потому что я читал, что DateTimeFormater - это новый способ Java8 + работать с Date, и мне нужно сохранить старый, потому что он много раз используется в других местах проекта.
Спасибо!
Ну, потому что он не статичен, поэтому мне нужно быть в случае предпочтений пользователя и т.д ... Первая строка кода - это пример, я не усложняю
Хорошо, тогда вы можете просто получить String
из предпочтений пользователя ... Покажите нам, где находится исходный код в вашем коде, пожалуйста.
Близко связанный: Преобразование SimpleDateFormat в DateTimeFormatter.
Вы можете использовать следующий код.
DateTimeFormatter dateTimeFormatter =
DateTimeFormatter.ofPattern(((SimpleDateFormat) dateFormat).toPattern());
Обычно это срабатывает, но в некоторых случаях это не так. Не все буквы шаблона формата имеют одинаковое значение, в частности, количество букв может иметь значение в DateTimeFormatter
, которое они не обязательно получали в DateFormat
. Но это, наверное, лучшее, что мы можем сделать. См. Преобразование SimpleDateFormat в DateTimeFormatter.
Большое спасибо, я не думал, что вы можете использовать DateFormat
в качестве SimpleDateFormat
без потери некоторых данных. И в этом случае меня не волнуют письма, поэтому проблемы, о которых сообщил Оле, не являются для меня проблемой.
Теоретически ваш DateFormat
может не быть SimpleDateFormat
, и если это не так, этот код выйдет из строя. Однако на практике я сомневаюсь, что это произойдет.
Если языковой стандарт вашего DateFormat
может отличаться от языкового стандарта по умолчанию, вы, вероятно, захотите также перенести его на свой DateTimeFormatter
. Поскольку это довольно просто, я оставлю его в качестве упражнения для читателя.
Это возможно, но его можно изменить в любое время в процессе работы, и он уже заменяет DateFormat
, поэтому мне будет легче просто перенести изменение на DateTimeFormatter
.
Почему бы тебе просто не сделать
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MM/dd/yy HH:mm:ss")
? Вы можете применитьstatic final String format = "MM/dd/yy HH:mm:ss"
и использовать его как старомодным, так и современным способом.