我使用DatePicker来选择日期。一切顺利。但问题是格式化日期。
// display current date
public void setCurrentDateOnView() {
tvDisplayDate = (TextView) findViewById(R.id.tvDate);
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
// set current date into textview
tvDisplayDate.setText(new StringBuilder().append(year).append("-").append(month + 1).append("-").append(day).append(" "));
// Month is 0 based, just add 1
}
根据Code我正在获得OUTPUT:2016-8-22 但 我的预期产量是2016-08-22(我想像这样的08月)
谢谢你, 问候, 卡。
答案 0 :(得分:2)
使用SimpleDateFormat:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
tvDisplayDate.setText(sdf.format(c.getTime()));
有关SimpleDateFormat的更多信息,请参阅官方documentation
答案 1 :(得分:0)
试试这可能会对你有所帮助
public static String updateDate(int day, int month, int year) {
String monthformatted = "";
if (month < 10)
monthformatted = "0" + month;
else
monthformatted = String.valueOf(month);
String dayformatted = "";
if (day < 10)
dayformatted = "0" + day;
else
dayformatted = String.valueOf(day);
// Append in a StringBuilder
String aDate = new StringBuilder().append(year).append('-')
.append(monthformatted).append("-").append(dayformatted).toString();
return aDate;
}
并将此方法称为
tvDisplayDate.setText(updateDate(day,month+1,year));
答案 2 :(得分:0)
使用SimpleDateFormat类..有很多方法可以做到这一点..
像这样...... SimpleDateFormat sdfSource = new SimpleDateFormat("dd-MM-yy");
// you can add any format..
Date date = sdfSource.parse(strDate);
答案 3 :(得分:0)
您可以使用字符串形成
追加零String.format("%02d", month);
// display current date
public void setCurrentDateOnView() {
tvDisplayDate = (TextView) findViewById(R.id.tvDate);
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
// set current date into textview
tvDisplayDate.setText(new StringBuilder().append(year).append("-").append(String.format("%02d", month+ 1)).append("-").append(day).append(" "));
// Month is 0 based, just add 1
}
希望这会有所帮助
答案 4 :(得分:0)
private SimpleDateFormat dateFormatter;
dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US);
tvDisplayDate.setText(dateFormatter.format(newDate.getTime()));
添加此内容即可成功
答案 5 :(得分:0)
// display current date
public void setCurrentDateOnView() {
tvDisplayDate = (TextView) findViewById(R.id.tvDate);
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
String formattedDate = String.format(Locale.ENGLISH, "%d-%02d-%02d", year, (month + 1), day);
tvDisplayDate.setText(formattedDate);
}
答案 6 :(得分:0)
字符串格式可以帮助你...
String month=String.format("%02d",cal.get(Calendar.MONTH));
String day=String.format("%02d",cal.get(Calendar.DAY_OF_MONTH)+1);
String year=String.format("%02d",cal.get(Calendar.YEAR));
String full_date = month+ "-" + day + "-" +year ;
答案 7 :(得分:0)
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy",Locale.US);
tvDisplayDate.setText(simpleDateFormat.format(new Date().getTime()));
答案 8 :(得分:0)
使用以下代码根据需要设置日期
tvDisplayDate.setText(String.format("%04d-%02d-%0d,year,month,date);
答案 9 :(得分:0)
LocalDate.now( ZoneId.of( "America/Montreal" ) ).toString()
您正在使用现在由java.time类取代的麻烦的旧遗留类。
请务必指定时区。如果省略,则隐式应用JVM的当前区域。默认情况会有所不同,即使在运行时也是如此。更好的具体。
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
或指定年,月,日。
LocalDate ld = LocalDate.of( 2016 , 1 , 2 );
月份数字是明智的,1月至12月为1-12。或者,您可以传递Month
枚举对象,而不仅仅是整数。
LocalDate ld = LocalDate.of( 2016 , Month.JANUARY , 2 );
java.time类在解析和生成字符串时使用标准ISO格式。这恰好是您想要的格式。
String output = today.toString();
可以解析相同的格式。
LocalDate ld = LocalDate.parse( "2016-01-02" );