我需要得到月份和日期: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,对吗?
答案 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)
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 8及更高版本中。这些类取代了旧的麻烦日期时间类,例如java.util.Date
,.Calendar
和&amp; java.text.SimpleDateFormat
。
现在位于Joda-Time的maintenance 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());