web-dev-qa-db-ja.com

JodaTime-日と月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

Joda APIを使用して、月と年の値を2桁で取得する方法はありますか。

12
Shantanoo K

別の方法は、10進フォーマッターを使用することです

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

}
19
upog

簡単に使用できます AbstractDateTime#toString(String)

System.out.println(" Month : "+ dateTime.toString("MM"));
System.out.println(" Day : "+ dateTime.toString("dd")); 
36
Reimeus

getMonthOfYear()を呼び出しています。これはintを返すだけです。 Octoberより1か月早く、満足できる値を返す可能性はありますか?別の言い方をすれば、Joda Timeを方程式から外してみましょう...これの出力はどうなると思いますか?

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

data(この場合は整数)とその整数に必要なテキスト表現の違いを理解する必要があります。特定の形式が必要な場合は、 DateTimeFormatter を使用することをお勧めします。 (とにかく一度に1つのフィールドを印刷することはめったに良い考えではありません...私はあなたが単一の文字列として「2013-09-08」のようなものが欲しいと思っていたでしょう。)

String.format 出力形式を制御する、またはDecimalFormat、または PrintStream.printf -整数をフォーマットする方法はいくつもあります。 9という数字はjust9という数字であることを理解する必要がありますが、フォーマットは関連付けられていません。

3
Jon Skeet