Joda Time - День месяца и месяц года Не возвращается 2-значный вывод
У меня есть следующий код:
String dateUTC = "2013-09-08T10:23:54.663-04:00";
org.joda.time.DateTime dateTime = new DateTime(dateUTC);
System.out.println(" Year : " + dateTime.getYear());
System.out.println(" Month : " + dateTime.getMonthOfYear());
System.out.println(" Day : " + dateTime.getDayOfMonth());
The Output of this program is :
Year : 2013
Month : 9 // I want this to be 2 digit if the month is between 1 to 9
Day : 8 // I want this to be 2 digit if the month is between 1 to 9
Есть ли способ получить значение месяца и года в 2-х цифрах с помощью API Joda.
Ответы
Ответ 1
Альтернативным способом будет использование десятичного форматирования
DecimalFormat df = new DecimalFormat("00");
=============================================== ===========================================
import java.text.DecimalFormat;
import org.joda.time.DateTime;
public class Collectionss {
public static void main(String[] args){
DecimalFormat df = new DecimalFormat("00");
org.joda.time.DateTime dateTime = new DateTime();
System.out.println(" Year : "+dateTime.getYear());
System.out.println(" Month : "+ df.format(dateTime.getMonthOfYear()));
System.out.println(" Day : "+dateTime.getDayOfMonth());
}
}
Ответ 2
Вы можете просто использовать AbstractDateTime#toString(String)
System.out.println(" Month : "+ dateTime.toString("MM"));
System.out.println(" Day : "+ dateTime.toString("dd"));
Ответ 3
Вы вызываете getMonthOfYear()
- это просто возвращает int
. Какую ценность он мог бы вернуть на месяц раньше, чем October
, который удовлетворит вас? Другими словами, позвольте взять Joda Time из уравнения... что вы ожидаете от вывода этого?
int month = 9;
System.out.println(" Month : " + month);
?
Вам нужно понять разницу между данными (целое в этом случае) и текстовое представление, которое вы хотите для этого целого. Если вам нужен конкретный формат, я предлагаю вам использовать DateTimeFormatter
. (Очень редко бывает, что нужно печатать одно поле одновременно... Я бы ожидал, что вы захотите что-то вроде "2013-09-08" в виде одной строки.)
Вы также можете использовать String.format
для управления выходным форматом или DecimalFormat
или PrintStream.printf
- существует множество способов форматирования целых чисел. Вам нужно понять, что число 9 - это всего лишь номер 9, но у него нет связанного с ним формата.
Ответ 4
Пример:
Calendar c = Calendar.getInstance();
System.out.format("%tB %te, %tY%n", c, c, c); // --> "September 10, 2013"
System.out.format("%tl:%tM %tp%n", c, c, c); // --> "01:59 pm"
System.out.format("%tD%n", c); // --> "09/10/13"