如何在android中获得月和日?

时间:2011-09-01 09:06:41

标签: java android datetime

我需要得到月份和日期:1月1日,2月02日...和1月第一天01等等...我试过这个:

 String dd = c.get(Calendar.YEAR) + "-" 
        + c.get(Calendar.MONTH)
        + "-" + c.get(Calendar.DAY_OF_MONTH) 
        + " " + c.get(Calendar.HOUR_OF_DAY) 
        + ":" + c.get(Calendar.MINUTE)
        + ":" + c.get((Calendar.SECOND));

但是我得到这样的东西:

2011-8-1 12:05:20

这个问题的解决方案是什么?对于一个月,我想我必须加1,对吗?

6 个答案:

答案 0 :(得分:13)

        String month=c.get(Calendar.MONTH)+1+"";
    if(month.length()<2){
         month="0"+month;   
    }  

答案 1 :(得分:11)

你的问题太复杂了。如果您只需要以某种方式格式化日期,那么请使用java.text.SimpleDateFormat类。请参阅此处的文档:http://developer.android.com/reference/java/text/SimpleDateFormat.html

如果您确实需要获取单个部件,那么您使用Calendar.get方法是正确的。我建议你阅读java.util.Calendar

答案 2 :(得分:7)

Date date = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss");
String formattedDate = format.format(date);

答案 3 :(得分:1)

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Log.e("TEST",sdf.format(new Date()));

答案 4 :(得分:0)

TL;博士

ZonedDateTime.now( ZonedId.of( "America/Montreal" ) ).format( DateTimeFormatter.ISO_LOCAL_DATE_TIME ).replace( "T" , " " )

详细

  

这个问题的解决方案是什么?对于一个月,我想我必须加1,对吧?

不,如果你使用更好的课程,那就不行了。您正在使用应该避免的麻烦,混乱,设计不佳的日期时间类。而是使用java.time类。

ZonedDateTime

获取所需/预期时区的当前时刻。获取ZonedDateTime对象。

ZoneId zoneId = ZonedId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( zoneId );

如果您需要,请询问部件。 java.time类明智地计算月份,1-12是1月到12月。顺便说一下,查看方便的Month枚举。

int month = zdt.getMonthValue();
int dayOfMonth = zdt.getDayOfMonth();

要从字面上得到你展示的字符串,让DateTimeFormatter类完成工作。预定义的格式化程序DateTimeFormatter.ISO_LOCAL_DATE_TIME几乎可以帮助您。您可以用SPACE替换中间的T来完成。

DateTimeFormatter f = DateTimeFormatter.ISO_LOCAL_DATE_TIME ;
String output = zdt.format( f ).replace( "T" , " " );

java.time

java.time框架内置于Java 8及更高版本中。这些类取代了旧的麻烦日期时间类,例如java.util.Date.Calendar和&amp; java.text.SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。

大部分java.time功能都被反向移植到Java 6&amp; ThreeTen-Backport中的7,并进一步适应Android中的ThreeTenABP

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。

答案 5 :(得分:0)

尝试此操作以获取日期和时间:

    Calendar rightNow = Calendar.getInstance();
    String y = String.valueOf(rightNow.getTime().getYear());
    String ym = String.valueOf(rightNow.getTime().getMonth());
    String yd = String.valueOf(rightNow.get(Calendar.DAY_OF_MONTH));
    String h = String.valueOf(rightNow.getTime().getHours());
    String hm = String.valueOf(rightNow.getTime().getMinutes());
    String hs = String.valueOf(rightNow.getTime().getSeconds());