java - 安卓时间0 :00 pm should be displaying 12:00 pm instead

标签 java android date time

<分区>

Possible Duplicate:
Android date/time displaying 0 instead of 12

下面是我使用的代码:

public void onTimeSet( TimePicker view, int selectedHour,
            int selectedMinute ) {
        // Gets current time
        Calendar c = Calendar.getInstance();

        hour = selectedHour;
        minute = selectedMinute;

        // set waking time into textview
        StringBuilder sb = new StringBuilder();
        if( hour >= 12 ){                      
          sb.append(hour-12).append( ":" ).append(pad(minute)).append(" PM");
        }else if( hour == 0 ){
            sb.append( "12" ).append( ":" ).append( pad(minute) ).append( " AM" );
        } else if( hour == 24 ){
            sb.append(hour+24).append( ":" ).append( pad(minute) ).append( " PM" );
        }

        else{
          sb.append(hour).append( ":" ).append(pad(minute)).append(" AM");
        }

        // Assign hour set in the picker
        c.set( Calendar.HOUR, selectedHour );
        c.set( Calendar.MINUTE, selectedMinute );

        // Have Calendar calculate the substraction of hours and minutes
        c.add( Calendar.HOUR, SUB_HOUR );
        c.add( Calendar.MINUTE, SUB_MINUTE );

        // Get the hour and the minute calculated
        hour = c.get( Calendar.HOUR );
        minute = c.get( Calendar.MINUTE );
        //hour = c.get( Calendar.HOUR_OF_DAY );

        StringBuilder sb2 = new StringBuilder();
        if(hour>=12){                      
          sb2.append(hour-12).append( ":" ).append(pad(minute)).append(" PM");
        }else if(hour == 0){
          sb2.append( "12" ).append( ":" ).append(pad(minute)).append( " AM" );
        }
        else{
          sb2.append(hour).append( ":" ).append(pad(minute)).append(" AM");
        }

        // set current time into textview
        answer.setText( "To wake up at " + sb + ", you must go to bed at " + sb2 );

在我的第一个 StringBuilder 中,当用户选择 12:00 pm 时,它显示在 0:00 Pm 而不是 12:00 pm,我该怎么做?提前致谢。

最佳答案

建议的副本并没有真正回答问题。在构建字符串之前,您需要以下内容

hour = hour % 12
if(hour == 0)
    hour = 12;

__

更新: 在模数之前,这样做:

// set this variable so it will be in scope

boolean morning = true
//then
if (hour >=12 && hour <  24) morning = false;
else morning = true; 

然后在你的 stringbuilder 中使用那个 boolean 值

关于java - 安卓时间0 :00 pm should be displaying 12:00 pm instead,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13892586/

相关文章:

postgresql - 将时钟列 postgresql 转换为日期和小时

java - java中如何在数组末尾插入一个元素?这是我的代码,显示 ArrayindexBoundOfException

Android 改造添加 header 和 HttpLoggingInterceptor

android - 将动态 ImageViews 添加到 android 中的水平 ScrollView

Java(Spring)通过时区错误自动更正日期

MySQL 选择年和月的第一天

java - ProgressMonitorInputStream - 进度条不显示真实进度

java - Lambda 作为 Predicate 接口(interface)中方法的组合,如果它被写成一条语句则无法编译

java - Android NumberPicker 在显示值更改时包装值

android - 在 Android Studio 中用 Kotlin 自动生成 getter 和 setter