2013-11-19 2 views
16

Как отображать только последние две цифры текущего года без использования каких-либо алгоритмов подстроки или каких-либо сторонних библиотек?Отображение последних двух цифр текущего года в Java

Я пробовал метод ниже, и он дал четырехзначный год. Я хочу знать, доступны ли какие-либо параметры форматирования даты, чтобы получить текущий год в двухзначном формате.

Calendar.getInstance().get(Calendar.YEAR); 

ответ

32

Вы можете использовать SimpleDateFormat для форматирования даты в соответствии с вашими требованиями.

DateFormat df = new SimpleDateFormat("yy"); // Just the year, with 2 digits 
String formattedDate = df.format(Calendar.getInstance().getTime()); 
System.out.println(formattedDate); 

Edit: В зависимости от потребностей/требований, либо подход, предложенный мной или один из них предложил Робин может быть использован. В идеале, имея дело с большим количеством манипуляций с датой, лучше использовать подход DateFormat.

55

Вы можете просто использовать оператор по модулю:

int lastTwoDigits = Calendar.getInstance().get(Calendar.YEAR) % 100; 

Edit: Использование SimpleDateFormat как @ R.J предложил, является лучшим решением, если вы хотите, чтобы результат должен быть строкой. Если вам нужно целое число, используйте modulo.

+0

есть robin ..god решение .. + 1. –

+0

+1, чистый класс – abiieez

+0

Превосходное решение ... :) – Smeet

4

Это один вкладыш:

System.out.println(Year.now().format(DateTimeFormatter.ofPattern("uu"))); 

Я использую java.time.Year, один из нескольких дат и времени введенных классов в Java 8 (а также портированном на Java 6 и 7). Это всего лишь один маленький пример из многих, где новые классы более удобны и приводят к более четкому коду, чем старые классы Calendar и SimpleDateFormat.

Если вы просто хотите двузначное число, а не как строку, вы можете использовать:
Year.now().getValue() % 100.

Другие ответы были хорошими ответами в 2013 году, но годы перешли. :-)