以双数字格式显示date

我无法以双数字格式显示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)); 

  • 如何以毫秒显示毫秒:小时:分钟:秒
  • Android:date格式在一个string
  • 在android datepicker中将date初始化为特定date,这不是当前date。
  • 在Java中的日历string时间戳?
  • 使用Android上的GSON将JSONdate格式parsing为string
  • 格式化日历date
  • 比较date(存储为string)在Android的SQLite数据库?
  • 获得当前的年份和月份导致奇怪的结果
  •  DecimalFormat mFormat= new DecimalFormat("00"); mFormat.format(Double.valueOf(year)); 

    在你的情况下:

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

    请使用SimpleDateFormat

     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(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)); 
     if (dayOfMonth < 10) { NumberFormat f = new DecimalFormat("00"); Sting date = String.valueOf(f.format(dayOfMonth)); } 

    TL;博士

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

    2016年1月7日

    避免旧的date时间课程

    您正在使用的java.util.Calendar类现在是遗留的。 避免这个类,以及java.util.Date等。 这些被certificate是devise不佳,令人困惑和麻烦的。

    java.time

    旧的date – 时间类已被Java 8及更高版本中构build的java.time框架所取代。 许多function已经被移植到ThreeTen-Backport项目中的Java 6&7中,并在ThreeTenABP中进一步适用于Android。

    这些现代的类可以用一行代码完成你的目标,如下所示。

    date时间格式化function

    旧的过时date时间类以及java.time类都提供了格式化function。 不需要你写自己的格式化代码。

    时区

    时区对确定date至关重要。 date随着时间的不同而在世界各地变化。 这个问题在问题和其他答案中被忽略了。 如果省略,则隐式应用JVM当前的默认时区。 最好明确指定你想要的/预期的时区。

    LocalDate

    对于没有时间和无时区的仅限date的值,请使用LocalDate 。 虽然在LocalDate没有存储时区,但时区确定为“今天”。

     ZoneId zoneId = ZoneId.of( "America/Montreal" ); LocalDate today = LocalDate.now( zoneId ); 

    ISO 8601

    您所需的YYYY-MM-DD格式为双位数字符合ISO 8601标准,用于定义date时间值的文本表示forms。 这个标准在java.time类中用于parsing/生成string。

     String output = today.toString(); 

    就是这三行代码。 你甚至可以把它们结合起来

     String output = LocalDate.now( ZoneId.of( "America/Montreal" ) ).toString(); 
     if ((month+1)<10){ place = "0"+(String) (month+1) } 

    白天做同样的事情,你很好。

    月份+1,因为它以0开头。

    使用SimpleDateFormat类..有很多方法可以做到这一点..

    像这样的东西

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

    你可以使用SimpleDateFormat类

     String dates = new java.text.SimpleDateFormat("dd-MM-YYYY").format(new Date()) 

    了解更多信息https://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

    乔达时间

    使用Joda-Time库,特别是org.joda.time.DateTime类。

     DateTime datetime = new DateTime(new Date()); String month = datetime.toString("MM"); 

    结果将是2位数字

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

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

    结果将是今年的四位数字。

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

    例如:

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

    所以如果select的月份less于10个月,他们会在月前增加“0”。