在android中的TimePicker中显示当前时间
Posted
技术标签:
【中文标题】在android中的TimePicker中显示当前时间【英文标题】:showing current time in TimePicker in android 【发布时间】:2014-11-10 09:43:07 【问题描述】:我使用此代码在 TimePicker 中显示当前时间,但我真的不知道,为什么它不能正确显示!?例如,现在时间(系统时间)是下午 2:56,但它显示的是凌晨 2:56!。我该如何解决?谢谢。
private long timer1 = 0;
...
switch (view.getId())
case R.id.add1:
if (timer1 == 0)
timer1 = getCurrentTime();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timer1);
TimePicker timePicker = (TimePicker) findViewById(R.id.tp_1);
timePicker.setCurrentHour(calendar.get(Calendar.HOUR));
timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE));
break;
. ..
private long getCurrentTime()
Calendar calendar = GregorianCalendar.getInstance();
return calendar.getTimeInMillis();
当我想用下面的这个方法将这个时间转换成字符串形式时,我也遇到了同样的问题:
private String convertTimeToString(long time)
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(time);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
//int hour = get;
int minute = calendar.get(Calendar.MINUTE);
String timeSet;
if (hour > 12)
hour -= 12;
timeSet = "PM";
else if (hour == 0)
hour += 12;
timeSet = "AM";
else if (hour == 12)
timeSet = "PM";
else
timeSet = "AM";
String minutes;
if (minute < 10)
minutes = "0" + minute;
else
minutes = String.valueOf(minute);
// Append in a StringBuilder
return String.format("%s:%s %s", hour, minutes, timeSet);
请帮帮我!
【问题讨论】:
检查我的答案你必须使用 hour = c.get(Calendar.HOUR_OF_DAY); 将 HOUR_OF_DAY 而不是 HOUR 设置为小时字段。 【参考方案1】:已更新1)错误时间问题:尝试像这样编辑代码:
...
timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));
...
2) 字符串表示问题:将日期/时间转换为字符串的一般方法如下:
String format = "hh:mm"; // or any other format - see note below
SimpleDateFormat formatter = new SimpleDateFormat(format);
formatter.format(yourDate);
或者当你使用long
时间戳最后一行将是:
formatter.format(new Date(yourLongTimestamp));
有用的链接: 您可能会看到不同的日期/时间格式符号here。 测试您可能here的不同格式模式。
【讨论】:
谢谢,但是当我想将时间转换为字符串形式时,还有另一个问题。我现在解释一下 一点也不。当您得到有用的答案时,最好接受它(左上角的复选标记) 对不起,我检查了标记,但我不知道它会改变,我不明白你的意思,但我一写就没有,谢谢推荐。 现在,我标记了所有的答案帖子,但它们没有标记! (滚动页面后)【参考方案2】:// display current time
public void setCurrentTimeOnView()
tvDisplayTime = (TextView) findViewById(R.id.tvTime);
timePicker1 = (TimePicker) findViewById(R.id.timePicker1);
final Calendar c = Calendar.getInstance();
hour = c.get(Calendar.HOUR_OF_DAY);
minute = c.get(Calendar.MINUTE);
// set current time into textview
tvDisplayTime.setText(
new StringBuilder().append(pad(hour))
.append(":").append(pad(minute)));
// set current time into timepicker
timePicker1.setCurrentHour(hour);
timePicker1.setCurrentMinute(minute);
【讨论】:
谢谢,但是这个方法的输出必须是字符串,因为我在这个项目的其他部分需要它。请帮助我,我现在该怎么做? 尝试查看此帖子中的最后一个答案:***.com/questions/3992820/… 用这个:return String.format("%s:%s %s", Integer.toString(hour), minutes, timeSet);【参考方案3】:替换这一行:
timePicker.setCurrentHour(calendar.get(Calendar.HOUR));
收件人:
hourStart = c.get(Calendar.HOUR_OF_DAY);
【讨论】:
谢谢,但是当我想将时间转换为字符串形式时,还有另一个问题。我现在解释一下。 @user3671748 请接受并支持答案。所以其他人可以从中受益。以上是关于在android中的TimePicker中显示当前时间的主要内容,如果未能解决你的问题,请参考以下文章
Android攻城狮datePicke&timePicker
Android 6.0 中TimePicker显示为滚动样式的方法
Android TimePicker 在横向模式下无法很好地显示