Один из наших клиентов хочет иметь возможность вводить дату только с двумя цифрами для компонента года. Дата будет в прошлом, поэтому мы хотим, чтобы она работала в предыдущем столетии, если 2-значный год после текущего года, но работает в текущем веке, если 2-значный год равен или меньше, чем в текущем году.Каков наилучший способ проанализировать дату в формате MM/DD/YY и настроить ее на текущий/предыдущий столетие?
на сегодня 10/30/2008
01/01/01 = 01/01/2001
01/01/09 = 01/01/1909
Это странно требование, и я решил проблему, мне просто не нравится мое решение. Кажется, что есть лучший способ сделать это.
Спасибо за помощь.
public static String stupidDate(String dateString)
{
String twoDigitYear = StringUtils.right(dateString, 2);
String newDate = StringUtils.left(dateString, dateString.length() - 2);
int year = NumberUtils.toInt(twoDigitYear);
Calendar c = GregorianCalendar.getInstance();
int centuryInt = c.get(Calendar.YEAR) - year;
newDate = newDate + StringUtils.left(Integer.toString(centuryInt), 2) + twoDigitYear;
return newDate;
}
Вы должны использовать joda время Freaky Formatters для append2digitYear http://joda-time.sourceforge.net/userguide.html#Freaky_Formatters – 2008-10-31 17:43:03
Я думал о том, чтобы делать что-то подобное, но это будет означать, что текущий год всегда будет рассматриваться как в текущем году, даже если это будет время в будущем (то есть, 12/31/08 будет 12/31/2008 вместо 12/31/1908). Я думаю, правильное решение будет зависеть от требований клиента. – 2008-10-31 21:54:14