我有以下代码:
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位数的月份和年份值。
答案 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
来控制输出格式,或DecimalFormat
或PrintStream.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"