Android 自定义时间日期选择器?

时间:2024-04-04 21:50:22

效果图:

Android 自定义时间日期选择器?          Android 自定义时间日期选择器?

1.主要引用 checkdate

//添加自定义日期选择
implementation project(path: ':checkdate')

2.activity调用

package com.ruidde.csdntestdemo;

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import com.zdmtech.checkdate.builder.TimePickerBuilder;
import com.zdmtech.checkdate.listener.OnTimeSelectListener;
import com.zdmtech.checkdate.utils.DateUtil;
import com.zdmtech.checkdate.view.TimePickerView;
import com.zdmtech.checkdate.view.WheelTime;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class MainActivity extends AppCompatActivity {
    private Context mContext;
    private TextView tv_content;
    private Button btn_picker;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext = this;
        initView();
        initDate();

    }

    public void initView() {
        tv_content = findViewById(R.id.tv_content);
        btn_picker = findViewById(R.id.btn_picker);
    }

    @SuppressLint("SimpleDateFormat")
    Calendar calendar ;
    public void initDate(){
        /**
         * 自定义结束时间
         * */
//        String str="2022-06-24";
//        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
//        try {
//            Date date = sdf.parse(str);
//            calendar = Calendar.getInstance();
//            calendar.setTime(date);
//        } catch (ParseException e) {
//            e.printStackTrace();
//        }
        /**
         * 自定义开始结束时间
         * */
//        WheelTime.DEFAULT_START_YEAR = 2000;
//        WheelTime.DEFAULT_END_YEAR = 2050;

        btn_picker.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                boolean[] arr = new boolean[]{true, true, true, true, true, false};
                Calendar startDate = Calendar.getInstance();
                startDate.add(Calendar.YEAR, -5); //当前年数减去的值后作为开始年数
                Calendar endDate = Calendar.getInstance();
                TimePickerView pickerView = new TimePickerBuilder(mContext, new OnTimeSelectListener() {
                    @Override
                    public void onTimeSelect(Date date, View v) {
                        String eventTime = DateUtil.dateToString(date, DateUtil.YMDHM);
                        tv_content.setText(eventTime);
                    }
                }).setType(arr)
                        .isCyclic(false) //是否循环
                        .setDate(endDate)
                        .setRangDate(startDate, endDate) //不设置隐藏该项显示数据是自定义的开始与结束时间(1900-2100)
//                        .setRangDate(startDate, calendar) //calendar自定义结束日期
                        .build();
                pickerView.show();
            }
        });
    }

}

3.如果设置当日时间为全天而不是到当前时间可以在

Android 自定义时间日期选择器?

中做修改

} else { //年份发生变化
      int dateMonth = (Calendar.getInstance().get(Calendar.MONTH)+1);
      int dateDay = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
      int dateHourse = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
      int dateMinute = Calendar.getInstance().get(Calendar.MINUTE);
      int currentMonth = (wv_month.getCurrentItem() + 1);
      int currentDay = (wv_day.getCurrentItem() + 1);
      if (currentMonth == dateMonth){ //当月
          if (currentDay == dateDay){ //当日
              wv_hours.setAdapter(new NumericWheelAdapter(0, dateHourse)); //设置的结束小时
              wv_minutes.setAdapter(new NumericWheelAdapter(0, dateMinute)); //设置的结束分钟
          }else { //不同日
              wv_hours.setAdapter(new NumericWheelAdapter(0, 23));
              wv_minutes.setAdapter(new NumericWheelAdapter(0, 59));
          }
      }else { //不同月
          wv_hours.setAdapter(new NumericWheelAdapter(0, 23));
          wv_minutes.setAdapter(new NumericWheelAdapter(0, 59));
      }
}

4.源码请点击链接下载:https://download.csdn.net/download/yyxhzdm/12888757