以双数字格式显示date

我无法以双数字格式显示date。 我希望当天或者月份是一个数字的例子时:4它会显示04.我有麻烦提出它的逻辑,如果有人可以帮助我,我会非常感激。

Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int day = c.get(Calendar.DAY_OF_MONTH); int month = c.get(Calendar.MONTH); if (month % 10 == 0) { Place = 0 + month; } String Dates = year + "-" + Place + "-" + day; Date.setText((Dates)); 

Solutions Collecting From Web of "以双数字格式显示date"

 DecimalFormat mFormat= new DecimalFormat("00"); mFormat.format(Double.valueOf(year)); 

在你的情况下:

  mFormat.setRoundingMode(RoundingMode.DOWN); String Dates = mFormat.format(Double.valueOf(year)) + "-" + mFormat.format(Double.valueOf(Place)) + "-" + mFormat.format(Double.valueOf(day)); 

请使用SimpleDateFormat

 SimpleDateFormat sd1 = new SimpleDateFormat("dd-MMM-yyyy"); System.out.println("Date : " + sd1.format(new Date(c.getTimeInMillis())); 

产量

 Date : 18-Apr-2012 
 Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int day = c.get(Calendar.DAY_OF_MONTH); int month = c.get(Calendar.MONTH)+1; String Dates = year + "-" +(month<10?("0"+month):(month)) + "-" + day; Date.setText((Dates)); 
 if (dayOfMonth < 10) { NumberFormat f = new DecimalFormat("00"); Sting date = String.valueOf(f.format(dayOfMonth)); } 

TL;博士

 LocalDate.now( ZoneId.of( "America/Montreal" ) ).toString() 

2016年1月7日

避免旧的date时间课程

您正在使用的java.util.Calendar类现在是遗留的。 避免这个类,以及java.util.Date等。 这些被certificate是devise不佳,令人困惑和麻烦的。

java.time

旧的date – 时间类已被Java 8及更高版本中构build的java.time框架所取代。 许多function已经被移植到ThreeTen-Backport项目中的Java 6&7中,并在ThreeTenABP中进一步适用于Android。

这些现代的类可以用一行代码完成你的目标,如下所示。

date时间格式化function

旧的过时date时间类以及java.time类都提供了格式化function。 不需要你写自己的格式化代码。

时区

时区对确定date至关重要。 date随着时间的不同而在世界各地变化。 这个问题在问题和其他答案中被忽略了。 如果省略,则隐式应用JVM当前的默认时区。 最好明确指定你想要的/预期的时区。

LocalDate

对于没有时间和无时区的仅限date的值,请使用LocalDate 。 虽然在LocalDate没有存储时区,但时区确定为“今天”。

 ZoneId zoneId = ZoneId.of( "America/Montreal" ); LocalDate today = LocalDate.now( zoneId ); 

ISO 8601

您所需的YYYY-MM-DD格式为双位数字符合ISO 8601标准,用于定义date时间值的文本表示forms。 这个标准在java.time类中用于parsing/生成string。

 String output = today.toString(); 

就是这三行代码。 你甚至可以把它们结合起来

 String output = LocalDate.now( ZoneId.of( "America/Montreal" ) ).toString(); 
 if ((month+1)<10){ place = "0"+(String) (month+1) } 

白天做同样的事情,你很好。

月份+1,因为它以0开头。

使用SimpleDateFormat类..有很多方法可以做到这一点..

像这样的东西

  SimpleDateFormat sdfSource = new SimpleDateFormat("dd/MM/yy"); // you can add any format.. Date date = sdfSource.parse(strDate); 

你可以使用SimpleDateFormat类

 String dates = new java.text.SimpleDateFormat("dd-MM-YYYY").format(new Date()) 

了解更多信息https://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

乔达时间

使用Joda-Time库,特别是org.joda.time.DateTime类。

 DateTime datetime = new DateTime(new Date()); String month = datetime.toString("MM"); 

结果将是2位数字

如果你需要例如一年,你可以使用:

 String year = datetime.toString("YYYY"); 

结果将是今年的四位数字。

你可以使用String.format()方法。

例如:

 String.format("%02d", month); 

所以如果select的月份less于10个月,他们会在月前增加“0”。