以双位数格式显示日期

The*_*zer 23 java android calendar 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));
Run Code Online (Sandbox Code Playgroud)

Moh*_*ikh 45

DecimalFormat mFormat= new DecimalFormat("00");
mFormat.format(Double.valueOf(year));
Run Code Online (Sandbox Code Playgroud)

在你的情况下:

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


小智 15

请使用SimpleDateFormat

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

产量

Date : 18-Apr-2012
Run Code Online (Sandbox Code Playgroud)

  • @GregKopff不,不对.该问题明确要求将该月作为两位数而不是月名. (3认同)

V.J*_*.J. 10

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));
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,现代 *java.time* 类使这更容易:`LocalDate.now().toString()` -&gt; `2018-01-27` (2认同)

小智 8

if (dayOfMonth < 10) {
    NumberFormat f = new DecimalFormat("00");
    Sting date = String.valueOf(f.format(dayOfMonth));
}
Run Code Online (Sandbox Code Playgroud)


小智 6

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

例子 :

String.format("%02d", month);
Run Code Online (Sandbox Code Playgroud)

因此,如果所选月份小于 10,他们会在月份前面添加“0”。


Bas*_*que 5

太长了;博士

\n\n
LocalDate.now()\n         .toString()\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n

2016-01-07

\n
\n\n

最好始终明确指定您想要/预期的时区。

\n\n
LocalDate.now( ZoneId.of( "America/Montreal" ) )\n         .toString()\n
Run Code Online (Sandbox Code Playgroud)\n\n

避免旧的日期时间类

\n\n

您正在使用的 java.util.Calendar 类现在已成为遗留类。避免此类以及 java.util.Date 等。事实证明,这些设计很糟糕、令人困惑且麻烦。

\n\n

java.time

\n\n

旧的日期时间类已被Java 8 及更高版本中内置的java.time框架取代。许多功能已在ThreeTen-Backport项目中向后移植到 Java 6 和 7,并在ThreeTenABP中进一步适应 Android 。

\n\n

这些现代类可以通过一行代码实现您的目标,如下所示。

\n\n

日期时间格式化功能

\n\n

旧的过时的日期时间类和 java.time 类都提供格式化功能。您无需编写自己的格式化代码。

\n\n

时区

\n\n

时区对于确定日期至关重要。世界各地的日期因时区而异,东部地区新的一天黎明较早。这个问题在问题和其他答案中被忽略了。如果省略,则隐式应用 JVM\xe2\x80\x99s 当前默认时区。最好明确指定您想要/预期的时区。

\n\n

LocalDate

\n\n

对于没有时间和时区的仅日期值,请使用LocalDate. 虽然 中未存储任何时区LocalDate,但时区确定 \xe2\x80\x9ctoday\xe2\x80\x9d。

\n\n
ZoneId zoneId = ZoneId.of( "America/Montreal" );\nLocalDate today = LocalDate.now( zoneId );\n
Run Code Online (Sandbox Code Playgroud)\n\n

ISO 8601

\n\n

您所需的两位数 YYYY-MM-DD 格式恰好符​​合ISO 8601标准,该标准定义了日期时间值的文本表示的合理格式。java.time 类中默认使用此标准来解析/生成字符串。

\n\n
String output = today.toString();\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\x99 就是全部,3 行代码。你甚至可以将它们结合起来。

\n\n
String output = LocalDate.now( ZoneId.of( "America/Montreal" ) ).toString();\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

关于java.time

\n\n

java.time框架内置于 Java 8 及更高版本中这些类取代了麻烦的旧遗留日期时间类,例如java.util.Date, Calendar, & SimpleDateFormat

\n\n

Joda -Time项目现在处于维护模式,建议迁移到java.time类。

\n\n

要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310

\n\n

您可以直接与数据库交换java.time对象。使用与JDBC 4.2或更高版本兼容的JDBC 驱动程序。不需要字符串,不需要类。java.sql.*

\n\n

从哪里获取 java.time 类?

\n\n\n\n

ThreeTen -Extra项目通过附加类扩展了 java.time。该项目是 java.time 未来可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如Interval、、、等等。YearWeekYearQuarter

\n


Zee*_*Zee 5

纯粹使用 Java 8 Time 库:

String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
Run Code Online (Sandbox Code Playgroud)