Joda时间 - 月份日期和月份未返回2位数输出

时间:2013-09-10 15:48:37

标签: java jodatime

我有以下代码:

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

有没有办法可以使用Joda API检索2位数的月份和年份值。

3 个答案:

答案 0 :(得分:18)

另一种方法是使用decimal formater

 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()); 
    }

}

答案 1 :(得分:3)

您正在致电getMonthOfYear() - 只返回int。它可能比October提前一个月回报什么价值?换句话说,让我们把Joda Time从等式中解脱出来......你期望它的输出是什么?

int month = 9;
System.out.println(" Month : " + month);

您需要了解数据(本例中为整数)与该整数所需的文本表示之间的区别。如果您需要特定格式,建议您使用DateTimeFormatter。 (无论如何,一次打印一个字段几乎不是一个好主意......我原本希望你想要像“2013-09-08”这样的字符串作为单个字符串。)

您也可以使用String.format来控制输出格式,或DecimalFormatPrintStream.printf - 有多种格式化整数的方法。您需要了解数字9 只是数字9 - 它没有与之关联的格式。

答案 2 :(得分:-1)

示例:

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"