在TextView的setText之前更改日期格式

时间:2016-08-22 06:29:12

标签: java android date

我使用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月)

谢谢你, 问候, 卡。

10 个答案:

答案 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)

TL;博士

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

java.time

您正在使用现在由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" );