【问题标题】:24-hour format to 12-hour format24 小时制到 12 小时制
【发布时间】:2023-04-08 11:51:01
【问题描述】:

我在将 24 小时格式转换为 12 小时格式时遇到问题。这是我的代码。

    private TimePickerDialog.OnTimeSetListener mTimeSetListener =
        new TimePickerDialog.OnTimeSetListener() {

            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                // TODO Auto-generated method stub
                ViewGroup vg=(ViewGroup) view.getChildAt(0);
                hour = hourOfDay;
                minutes = minute;
                String am_pm = (hourOfDay < 12) ? "AM" : "PM";
                SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a",Locale.US);
                String tme = hour +":"+ minutes+am_pm;
                et1.setText(tme);
            }
        };

我从警报对话框切换到时间选择器对话框,因为我不知道如何将 24 小时制更改为 12 小时制

et1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                new TimePickerDialog(MainActivity.this, mTimeSetListener, hour, minutes, false).show();
            }
        });

    }  

这是我已经将布尔印象变为假的证据。

【问题讨论】:

    标签: android time-format


    【解决方案1】:

    这也将解决您的初始 0 问题

    String time = "", md = " AM";
    if(selectedHour == 0) selectedHour = 12;
    else if(selectedHour > 12) {selectedHour -= 12; md = " PM";}
    else if(selectedHour == 12) md = " PM";
    
    if(selectedHour < 10) time = "0";
    time += selectedHour;
    time += ":";
    if(selectedMinute < 10) time += "0";
    time += selectedMinute;
    time += md;
    et_time.setText(time);
    

    输出 例如:02:05 AM 而不是 2:5

    【讨论】:

      【解决方案2】:

      试试这个-

      private TimePickerDialog.OnTimeSetListener mTimeSetListener =
      new TimePickerDialog.OnTimeSetListener() {
      
          @Override
          public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
              // TODO Auto-generated method stub
              hour = hourOfDay;
              minutes = 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 min = "";
              if (minutes < 10)
               min = "0" + minutes ;
              else
               min = String.valueOf(minutes);
      
              // Append in a StringBuilder
              String aTime = new StringBuilder().append(hour).append(':')
              .append(min ).append(" ").append(timeSet).toString();
              et1.setText(aTime);
          }
      };
      

      【讨论】:

        【解决方案3】:

        我就是这样做的。格式 SimpleDateFormat 采用 https://developer.android.com/reference/java/text/SimpleDateFormat.html#format

        TimePickerDialog timePickerDialog=  new TimePickerDialog(NotificationActivity.this,
            new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker timePicker, int hour, int minute) {
        
                    Time time = new Time(hour, minute, 0);
        
                    //little h uses 12 hour format and big H uses 24 hour format
                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("h:mma");
        
                    //format takes in a Date, and Time is a sublcass of Date
                    String s = simpleDateFormat.format(time);
                    toTime.setText(s);
                }
            }, hour, minute, false);
        

        【讨论】:

          【解决方案4】:

          我知道我为时已晚,但只有两行就完美了。

          private TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() {
                  @Override
                  public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                      boolean isPM = (hourOfDay >= 12);
                      tvTime.setText(String.format("%02d:%02d %s", (hourOfDay == 12 || hourOfDay == 0) ? 12 : hourOfDay % 12, minute, isPM ? "PM" : "AM"));
                  }
              };
          

          【讨论】:

          • 你能帮我用 kotlin 写这段代码吗?
          • val isPM: Boolean = hourOfDay>= 12 tvTime.setText( java.lang.String.format( "%02d:%02d %s", if (hourOfDay=== 12 || hourOfDay= == 0) 12 else hour % 12, minute, if (isPM) "PM" else "AM" ) )
          • 复制粘贴java代码会自动隐藏,老兄。
          【解决方案5】:

          请尝试使用此代码

            int Hour=0;
          int Minute=0;
          int new_hour=0;
           String new_minute=null;
          TimePickerDialog.OnTimeSetListener time = new TimePickerDialog.OnTimeSetListener() {
          
          
          
          public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                   Hour = hourOfDay;
                   Minute = minute;
          
                  String time_form = hourOfDay + ":" + minute + ":00";
                  int r = minute / 10;
                  if (r == 0) {
                      new_minute = "0" + minute;
                  } else {
                      new_minute = minute + "";
                  }
                  if (Hour > 12) {
                      new_hour = (hourOfDay - 12);
                      edit_text.setText(new StringBuilder().append(new_hour)
                              .append(":").append(new_minute)
                              + " PM");
                  } else if (Hour == 12) {
          
                      new_hour = hourOfDay;
                      edit_text.setText(new StringBuilder().append(new_hour)
                              .append(":").append(new_minute)
                              + " PM");
                  }
          
                  else {
                      new_hour = hourOfDay;
                      edit_text.setText(new StringBuilder().append(new_hour)
                              .append(":").append(new_minute)
                              + " AM");
                  }
          
              }
          
          };
          

          【讨论】:

            【解决方案6】:

            有一个构造函数参数

            public TimePickerDialog (Context context, TimePickerDialog.OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView)
            

            docs。对于格式化使用android.text.format.DateFormat

            【讨论】:

            • 是的先生.. 我已经这样做了.. 很抱歉,因为缺少信息。
            【解决方案7】:

            你为什么不使用

            timePicker.setIs24HourView(false);

            【讨论】:

            • 我已经尝试过了,但结果是一样的..这只是时间选择器的一个视图。
            猜你喜欢
            • 2018-04-13
            • 1970-01-01
            • 2014-11-20
            • 1970-01-01
            • 2021-12-05
            • 2017-03-25
            • 2021-10-14
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多