java - 从日期时间选择器获取 12 小时时间

标签 java android datetime

我正在使用 Material DateTime 选择器来选择日期和时间。它工作正常,但在 onTimeSetListener 方法中它以 24 小时格式返回 hourOfTheDay

我想以 12 小时格式显示它,因为我使用了 if 条件,其中小时数大于 12,那么它应该显示 PM,但小时数不会改变。

我怎样才能改变这个?

public class TransportFragment extends Fragment implements DatePickerDialog.OnDateSetListener,TimePickerDialog.OnTimeSetListener {


    private OnFragmentInteractionListener mListener;
    private EditText mEditTxt_From,mEditTxt_To,mEditTxt_DateTime;
    int PLACE_PICKER_REQUEST = 1;

    private static final String TAG = "PlacePickerSample";

    private static final int REQUEST_PLACE_PICKER_FROM = 1;
    private static final int REQUEST_PLACE_PICKER_TO = 2;

    private String mDate;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_transport, container, false);

        mEditTxt_From = (EditText) view.findViewById(R.id.editTextFrom);
        mEditTxt_To = (EditText) view.findViewById(R.id.editTextTo);
        mEditTxt_DateTime = (EditText) view.findViewById(R.id.editTextDateTime);


        mEditTxt_DateTime = (EditText) view.findViewById(R.id.editTextDateTime);


        mEditTxt_DateTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Calendar now = Calendar.getInstance();
                DatePickerDialog dpd = DatePickerDialog.newInstance(
                        TransportFragment.this,
                        now.get(Calendar.YEAR),
                        now.get(Calendar.MONTH),
                        now.get(Calendar.DAY_OF_MONTH)
                );

                dpd.setVersion(DatePickerDialog.Version.VERSION_2);

                dpd.setAccentColor(ContextCompat.getColor(getActivity(),R.color.colorAccent));

                dpd.show(getFragmentManager(), "Datepickerdialog");
            }
        });

    @Override
    public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
        mDate = dayOfMonth+"/"+(++monthOfYear)+"/"+year;

        Calendar now = Calendar.getInstance();

        TimePickerDialog tpd = TimePickerDialog.newInstance(
                TransportFragment.this,
                now.get(Calendar.HOUR_OF_DAY),
                now.get(Calendar.MINUTE),
                false
        );


        tpd.setVersion(TimePickerDialog.Version.VERSION_2);

        tpd.setAccentColor(ContextCompat.getColor(getActivity(),R.color.colorAccent));

        tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialogInterface) {
                Log.d("TimePicker", "Dialog was cancelled");
            }
        });
        tpd.show(getFragmentManager(), "Timepickerdialog");
    }

    @Override
    public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) {
        String hourString = hourOfDay < 10 ? "0"+hourOfDay : ""+hourOfDay;
        String minuteString = minute < 10 ? "0"+minute : ""+minute;
        String secondString = second < 10 ? "0"+second : ""+second;

        String time;

        if(hourOfDay > 12)
        {
            time = hourOfDay + ":" + minuteString + " PM";
        }
        else {

            time = hourOfDay + ":" + minuteString + " AM";
        }

        mEditTxt_DateTime.setText(mDate + "  " + time );
    }
}

请帮忙。谢谢。

最佳答案

我认为您的if 语句无效:



    if (hourOfDay > 12) {
        time = (hourOfDay - 12)  + ":" + minuteString + " PM";
    } else {
       ...
    }

关于java - 从日期时间选择器获取 12 小时时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44088500/

相关文章:

java - 具有高级功能的 Android Eclipse 项目布局

android - 尝试使用蓝牙时出现空指针异常

android - 比较 Android 中的两个 List<String> 值

Java线程join()混淆

java - 如何在 docker-ubuntu 环境中设置 JAVA_HOME?

java - 安卓3g连接延迟

python - 在 PyTables 中存储和提取 numpy 日期时间

mysql - 使用 MySQL 事件更新值

node.js - Timex3 日期时间解析和转换

java - Jaxb Xml 到 java.awt