【问题标题】:showing current time in TimePicker in android在android中的TimePicker中显示当前时间
【发布时间】: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 设置为小时字段。

标签: android time picker


【解决方案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);

    }

【讨论】:

  • 谢谢,但是这个方法的输出必须是字符串,因为我在这个项目的其他部分需要它。请帮助我,我现在该怎么做?
  • 尝试查看此帖子中的最后一个答案:stackoverflow.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 请接受并支持答案。所以其他人可以从中受益。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
  • 1970-01-01
  • 2022-09-24
  • 1970-01-01
相关资源
最近更新 更多