Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以两位数格式显示日期_Java_Android_Date_Calendar - Fatal编程技术网

Java 以两位数格式显示日期

Java 以两位数格式显示日期,java,android,date,calendar,Java,Android,Date,Calendar,我无法以两位数格式显示日期。我希望它是这样的,当一天或一个月是一位数的时候,例如: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);

我无法以两位数格式显示日期。我希望它是这样的,当一天或一个月是一位数的时候,例如: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));
就你而言:

 mFormat.setRoundingMode(RoundingMode.DOWN);
 String Dates =  mFormat.format(Double.valueOf(year)) + "-" +  mFormat.format(Double.valueOf(Place)) + "-" +  mFormat.format(Double.valueOf(day));
if((月+1)使用类..有很多方法可以做到

像这样的

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


      Date date = sdfSource.parse(strDate);

请使用SimpleDataFormat

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(日历年);
int day=c.get(日历日期,每月的第天);
int month=c.get(日历月)+1;
字符串日期=年+“-”+(月<代码>如果(月的天数<10){
NumberFormat f=新的十进制格式(“00”);
Sting date=String.valueOf(f.format(dayOfMonth));
}
tl;dr 2016-01-07

最好总是明确地指定所需/预期的时区

LocalDate.now( ZoneId.of( "America/Montreal" ) )
         .toString()
避免旧的日期时间类 您正在使用的java.util.Calendar类现在是遗留类。请避免使用该类以及java.util.Date之类的类。事实证明,这些类设计拙劣、容易混淆且麻烦

java.time 旧的日期时间类已经被内置在Java8和更高版本中的框架所取代。在项目中,许多功能已经被移植到Java6和Java7中,并在年进一步适应Android

这些现代类可以在一行代码中完成您的目标,如下所示

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

时区 时区对于确定日期至关重要。随着东方的黎明,世界各地的日期因时区而异。在问题和其他答案中,此问题被忽略。如果忽略,JVM的当前默认时区将被隐式应用。最好明确指定所需/预期的时区

LocalDate
对于没有时间和时区的仅日期值,请使用。虽然
LocalDate
中没有存储时区,但时区决定“今天”

ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zoneId );
ISO 8601 您所需的两位数YYYY-MM-DD格式恰好符合为日期时间值的文本表示定义合理格式的标准。默认情况下,该标准在java.time类中用于解析/生成字符串

String output = today.toString();
就这样,3行代码。你甚至可以把它们组合起来

String output = LocalDate.now( ZoneId.of( "America/Montreal" ) ).toString();

关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅.和搜索堆栈溢出以获取许多示例和解释。规范为

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

从哪里获得java.time类

  • ,及以后
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 更高版本的Android捆绑包实现了java.time类
    • 对于早期的Android,该项目采用了ThreeTen Backport(如上所述)
该项目使用其他类扩展了java.time。该项目是将来可能添加到java.time的一个试验场。您可以在这里找到一些有用的类,如、、和。

Joda time 使用库,特别是类

结果将是2位数字

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

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

结果将是一年中的4位数字。

您可以使用SimpleDataFormat类

String dates = new java.text.SimpleDateFormat("dd-MM-YYYY").format(new Date())
更多信息 您可以使用String.format()方法

例如:

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

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

纯粹使用Java 8时间库:

String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));

可能是Place=“0”+month将以字符串形式存储?仅供参考,像
java.util.date
java.util.Calendar
、和
java.text.simpleDataFormat
这样麻烦的旧日期时间类现在是遗留的,被这些类所取代。在项目中,许多java.time功能被重新移植到java 6和java 7中。进一步适用于项目中早期的Android。请参阅。此代码很棒,但出于某种原因,它强制将我的代码显示为3/18而不是4/18。我不明白为什么要使用mFormat.setRoundingMode(RoundingMode.DOWN);参见编辑后的answer.FYI,诸如
java.util.date
java.util.Calendar
、和
java.text.SimpleDateFormat
等令人烦恼的旧日期时间类现在已经被这些类所取代,并被遗留下来。在项目中,许多java.time功能都被移植到了java 6和java 7中。进一步适用于早期的Androide项目。请参阅。@GregKopff否,不正确。该问题以两位数而不是月份名称明确询问月份。@Basil,那么,您可以使用dd-MM-yyyy而不是dd-MMM-yyyy@Hatim我建议你编辑你的答案,以提供相关的解决方案,而不是发表评论。然后,也许你不应该。你不相关的答案有13张赞成票和1张补票,而我自己的回答点有1张反对票。@Basil,我刚刚发表了一条评论。这不是我的回答亲爱的反对票的选民:请在投票时留下批评意见。好的,我正在等待时间给你一张赞成票:)Java 8中没有
DateTime
类。Android.Tks中也没有太多Java 8类。我将文本更改为org.joda.time.DateTime。这个答案有什么问题吗?我已经在不同的上下文中使用了它,我从来没有遇到过问题。现在没有问题。我
String output = LocalDate.now( ZoneId.of( "America/Montreal" ) ).toString();
DateTime datetime = new DateTime(new Date());
String month = datetime.toString("MM");
String year = datetime.toString("YYYY");
String dates = new java.text.SimpleDateFormat("dd-MM-YYYY").format(new Date())
String.format("%02d", month);
String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));