Android Studio - DateTimePicker の使用について

まずはエフェクトダイアグラム
年のみ
年、月、日、時
サードパーティのライブラリを参考にする方法

具体的な手順は次のとおりです (例として 2 番目のレンダリングを取り上げます)。

  1. build.gradle で導入 (下位バージョンの AS はコンパイルによって参照されますが、上位バージョンはコンパイルを放棄して実装を使用します)
implementation 'com.jzxiang.pickerview:TimePickerDialog:1.0.1'
  1. 次に、オブジェクトを定義します
    private SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private TimePickerDialog pickerdialog;
  1. XML コントロールについて
overTime = (TextView) findViewById(R.id.tv_overTime);
  1. 次に、onCreate関数で呼び出します
 overTime.setOnClickListener( new OnPickOverYearClickListener(this,overTime));
  1. 次に、onCreat 関数の外側で OnPickOverYearClickListener(this,overTime) を実装します。
    public class OnPickOverYearClickListener implements View.OnClickListener, OnDateSetListener {
        public OnPickOverYearClickListener(AddActivity addActivity, TextView overTime) {
        }

        @Override
        public void onClick(View view) {
            pickerdialog = new TimePickerDialog.Builder().setType(Type.ALL).setCallBack(this).
                    setTitleStringId("请选择时间").setCurrentMillseconds(System.currentTimeMillis())
                    .setThemeColor(getResources().getColor(R.color.green))
                    .setWheelItemTextSize(15).build();
            pickerdialog.show(getSupportFragmentManager(),"abc");
        }

        @Override
        public void onDateSet(TimePickerDialog timePickerView, long millseconds) {
            //显示overTime
            overTime.setText(getDateToString(millseconds));
//            Toast.makeText(this, "你选择的时间:"+getDateToString(millseconds), Toast.LENGTH_SHORT).show();
            //将选择的时间(此时是秒的形式)转换成TimeStamp存进数据库
            signOverTime = getDateToTimeStamp(millseconds);
        }

        public String getDateToString(long time){
            Date d = new Date(time);
            return sf.format(d);
        }

        public Timestamp getDateToTimeStamp(long time){
            Timestamp timestamp = new Timestamp(time);
            System.out.println("d----"+timestamp);
            return timestamp;
        }
    }

注: initTimeDialog(Type.ALL) 内の Type.ALL を、年月のみ、年月日、時分割など、他の型に置き換えることができるので、最初のレンダリングを実現する必要がある場合は、 Type .ALL を Type.YEAR に置き換えるだけです。
添付資料: 同じActivityに2つのDateTimePickerを実装する必要がある場合は、OnPickOverYearClickListener(this,overTime)の関数名を変更して実装するだけです。年だけが必要で、年を int に変更してデータベースに保存する場合は、goToString 関数 (今回は、実際には xx 形式の 1 月 1 日の 0:00 です) を String に変換し、次に String.subString(0,4) を使用して最初の 4 桁 (つまり、年) を取得してから変換します。 int型へ

おすすめ

転載: blog.csdn.net/zzzzzwbetter/article/details/129221136