Есть ли способ проанализировать следующую строку даты как July 23 1916
, а не July 23 2016
?
System.out.println(new SimpleDateFormat("yy/MM/dd", Locale.US).parse("16/07/23"));
Есть ли способ проанализировать следующую строку даты как July 23 1916
, а не July 23 2016
?
System.out.println(new SimpleDateFormat("yy/MM/dd", Locale.US).parse("16/07/23"));
Документ Java (http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html) говорит:
Для синтаксического анализа с использованием сокращенного шаблона года ("y" или "yy") SimpleDateFormat должен интерпретировать сокращенный год относительно некоторого столетия. Для этого даты устанавливаются в пределах 80 лет до и 20 лет после создания экземпляра SimpleDateFormat. Например, при использовании шаблона «ММ/дд/гг» и экземпляра SimpleDateFormat, созданного 1 января 1997 г., строка «01/11/12» будет интерпретироваться как 11 января 2012 г., а строка «05/04/ 64" будет интерпретироваться как 4 мая 1964 года.
Метод SimpleDateFormat.set2DigitYearStart(Date)
можно использовать для фиксации года.
Если я понимаю ваш вопрос, то да,
SimpleDateFormat sdf = new SimpleDateFormat("yy/MM/dd", Locale.US);
Calendar cal = Calendar.getInstance(Locale.US);
cal.set(1900, 0, 1);
sdf.set2DigitYearStart(cal.getTime());
System.out.println(sdf.parse("16/07/23"));
Согласно SimpleDateFormat.set2DigitYearStart(Date)
javadoc ,
Устанавливает 100-летний период. Двузначное число лет будет интерпретироваться как начало даты, указанной пользователем.
Для этого можно использовать метод set2DigitYearStart
. Он позволяет указать дату начала. Дата анализа будет находиться в интервале [дата начала, дата начала + 100 лет].
См. документацию для подробностей.
Может быть, вы ищете это.
Calendar cal = Calendar.getInstance();
cal.set( Calendar.YEAR, 1900 );
SimpleDateFormat format = new SimpleDateFormat( "yy/MM/dd", Locale.US );
format.set2DigitYearStart( cal.getTime() );
System.out.println( format.parse( "16/07/23" ) );
System.out.println
, вам следует добавить еще одну строку, показывающую вывод примера. Если вы можете разместить рабочий пример на сайте онлайн-компилятора кода, таком как ideone, это будет очень полезно. Все это делается для того, чтобы ваш ответ выделялся и чтобы за него не проголосовали. stackoverflow.com/help/how-to-answer
- person Engineer2021; 23.07.2014