Java 以两位数格式显示日期
我无法以两位数格式显示日期。我希望它是这样的,当一天或一个月是一位数的时候,例如:4,它将显示04。我很难想出它的逻辑,如果有人能帮助我,我将非常感激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);
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"));