在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 在横向模式下无法很好地显示

android timepicker 可以显示秒数吗

android datepickerdialog怎样设置时间最小值??

DatePicker和TimePicker显示当前日期和时间