Calendar.MINUTE给出分钟而没有前导零

aft*_*tab 25 java android

大家好,我使用下面的代码获取Android手机时间,但如果分钟在1到9之间,它给我几分钟没有零.

例如:现在我有时间在我的设备12:09,但它给我12:9

Calendar c = Calendar.getInstance();
int hrs = c.get(Calendar.HOUR);
int mnts = c.get(Calendar.MINUTE);
String curTime = "" + hrs + ":" + mnts;
return curTime;
Run Code Online (Sandbox Code Playgroud)

在上面的代码之后,我也尝试下面的代码,它给出与上面相同的东西,分钟没有零,然后编号在1到9之间的分钟..

final Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
Date date = cal.getTime();
int mHour = date.getHours();
int mMinute = date.getMinutes();
Run Code Online (Sandbox Code Playgroud)

Nat*_*ate 86

正如叶戈尔所说,一个int只是一个整数.整数没有前导零.将它们转换为对象时,它们只能以前导零显示String.一种方法是这样的:

String curTime = String.format("%02d:%02d", hrs, mnts);
Run Code Online (Sandbox Code Playgroud)

格式字符串%02d格式化一个带前导零的整数(即0in %02d),总是占用2位宽度(即2in %02d).

这会产生 String

12:09

  • @Nuno,我没有说**需要**这样做.当某人用*"一种方法来做......"*开始一个句子时,他们隐含地承认有其他**方法可以做到这一点.但是,在这种情况下,没有更多工作要做这种方式(对于程序员或CPU),而不是使用DateFormatter.这张海报的根本问题是他/她没有意识到`int`对象没有前导零.只有`String`对象才会有前导零.我的回答解释了这一点,并建议*一个*解决方案.就这样. (6认同)

Nun*_*ves 14

所有人都说整数.但处理日期和日历以显示该信息应该像这样使用:

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yourpattern"); //like "HH:mm" or just "mm", whatever you want
String stringRepresentation = sdf.format(date);
Run Code Online (Sandbox Code Playgroud)

模式"mm"如果介于0和9之间将具有前导零.如果使用"mmmm",你将获得0009,这看起来并不是很有意义,但这一切都取决于你是什么想.:)

如果您使用模式,HH:mm您将获得12:09(日期实例的当前时间).


Dar*_*dow 5

您可以使用 SimpleDateFormat 类格式化日期

如果您从日历实例获取日期和时间:-

final Calendar c = Calendar.getInstance();

SimpleDateFormat timeFormat = new SimpleDateFormat("hh:mm");
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");

timeEdittext.setText(timeFormat.format(c.getTime()));
dateEdittext.setText(dateFormat.format(c.getTime()));
Run Code Online (Sandbox Code Playgroud)

如果您有日、月、年、小时、分钟作为整数(通常发生在日期选择器和时间选择器对话框中)

Calendar calendar = Calendar.getInstance();

calendar.set(year, month, dayOfMonth);
String date = new SimpleDateFormat("dd-MM-yyyy").format(calendar.getTime());
Run Code Online (Sandbox Code Playgroud)