Java Calendar.MINUTE提供分钟数,不带前导零

Java Calendar.MINUTE提供分钟数,不带前导零,java,android,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;

大家好,我正在使用下面的代码来获取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;
在上面的代码之后,我也尝试了下面的代码,它给出了与上面相同的东西,没有零的分钟数之前,它的分钟数在1到9之间

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

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

String curTime = String.format("%02d:%02d", hrs, mnts);
格式字符串
%02d
用前导零格式化一个整数(即
%02d
中的
0
),总是占据两位数的宽度(即
%02d
中的
2

这将产生
字符串

12:09


一切都是关于整数的。但处理日期和日历以显示该信息时,应这样使用:

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yourpattern"); //like "HH:mm" or just "mm", whatever you want
String stringRepresentation = sdf.format(date);
如果模式“mm”介于0和9之间,则它将有一个前导零。如果你使用“mmmm”,你会得到0009,这看起来没有多大意义,但这取决于你想要什么

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

函数时间()
{
变量时间=新日期();
var hh=time.getHours();
var mmm=time.getMinutes();

如果(mmm您可以使用SimpleDataFormat类格式化日期

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

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()));
如果将日、月、年、小时、分钟作为整数(通常发生在日期选择器和时间选择器对话框中)


使用以下方法以双精度格式转换
Hour:Minute

/*
* make double format hour:minute string
* @hour : 1
* @minute : 2
* return : 01:02
* */

public static String hourMinuteZero(int hour,int mnts){
    String hourZero = (hour >=10)? Integer.toString(hour):String.format("0%s",Integer.toString(hour));
    String minuteZero = (mnts >=10)? Integer.toString(mnts):String.format("0%s",Integer.toString(mnts));
    return hourZero+":"+minuteZero;
}

分钟怎么可能用尾随的零来表示,因为它们是以整数的形式表示的呢?你的任务是按自己喜欢的方式显示它们。你不需要自己对字符串进行格式化。对于日期处理,请使用DateFormat API。@Nuno,我没有说需要这样做。当有人用“一种方法是……”,他们含蓄地承认还有其他方法可以做到这一点。但是,在这种情况下,没有更多的工作可以这样做(无论是对于程序员还是对于CPU),vs.使用日期格式化程序。海报的根本问题是,他/她没有意识到
int
对象没有前导零。只有
String
对象才会有前导零。我的回答对此进行了解释,并提出了一个解决方案。仅此而已。
Calendar calendar = Calendar.getInstance();

calendar.set(year, month, dayOfMonth);
String date = new SimpleDateFormat("dd-MM-yyyy").format(calendar.getTime());
/*
* make double format hour:minute string
* @hour : 1
* @minute : 2
* return : 01:02
* */

public static String hourMinuteZero(int hour,int mnts){
    String hourZero = (hour >=10)? Integer.toString(hour):String.format("0%s",Integer.toString(hour));
    String minuteZero = (mnts >=10)? Integer.toString(mnts):String.format("0%s",Integer.toString(mnts));
    return hourZero+":"+minuteZero;
}