Android时间格式问题 - 它即将成为A.M / P.M.

时间:2016-06-07 10:34:47

标签: android datetime motorola nexus-5

从Moto X和Nexus 5X设备获取日期时间格式时出现问题 以下是我正在使用的代码。

@Override
 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

  SimpleDateFormat mSDF = null;
  final String format = Settings.System.getString(fragment.getActivity()
    .getContentResolver(), Settings.System.TIME_12_24);
  boolean is24HourFormat = android.text.format.DateFormat
    .is24HourFormat(getActivity());

  mSDF = new SimpleDateFormat("hh:mm a", Locale.ENGLISH);

  System.out.println("Time Format:" + format);
  Calendar mCalendar = Calendar.getInstance();
  mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
  mCalendar.set(Calendar.MINUTE, minute);

  String selectedTime = mSDF.format(mCalendar.getTime());

  fragment.onTimeSelected(selectedTime, inputField);
 }

在selectedTime上我得到时间格式,如10:40 A.M或P.M而不是AM或PM。

当我把它传递给API时会出现问题,好像我们这样发送它会导致其他具有正常格式的移动设备中的日期格式转换问题。

那么有没有办法在上面提到的设备中使用AM,PM而不是A.M或P.M来获取Timeformat?

2 个答案:

答案 0 :(得分:1)

我已按照以下方式解决。

替换为空

fragment.onTimeSelected(selectedTime.replace("\\.",""), inputField);

并在转换期间,请指定区域设置。

SimpleDateFormat dateFormat = new SimpleDateFormat(
       "yyyy-MM-dd HH:mm:ss",Locale.ENGLISH);

答案 1 :(得分:0)

更改

fragment.onTimeSelected(selectedTime, inputField);

fragment.onTimeSelected(selectedTime.replace(".",""), inputField);