14

我有以下代码:

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 位数字检索月份和年份的值。

4

4 回答 4

38

你可以简单地使用AbstractDateTime#toString(String)

System.out.println(" Month : "+ dateTime.toString("MM"));
System.out.println(" Day : "+ dateTime.toString("dd")); 
于 2013-09-10T15:58:26.047 回答
20

另一种方法是使用十进制格式器

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

}
于 2013-09-10T15:54:31.670 回答
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 - 它没有与之关联的格式。

于 2013-09-10T15:52:15.243 回答
-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"
于 2013-09-10T16:01:54.573 回答