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.如果设置当日时间为全天而不是到当前时间可以在

中做修改

} 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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是一个简单的自定义日期选择器的示例代码: 首先,创建一个名为`DatePickerDialogFragment`的新类,继承自`DialogFragment`。这个类将用于显示日期选择器对话框。 ```java import android.app.DatePickerDialog; import android.app.Dialog; import android.os.Bundle; import android.widget.DatePicker; import androidx.annotation.NonNull; import androidx.fragment.app.DialogFragment; import java.util.Calendar; public class DatePickerDialogFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // 获取当前日期 final Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); // 创建并返回一个 DatePickerDialog 实例 return new DatePickerDialog(getActivity(), this, year, month, day); } @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { // 在此处处理选择的日期,你可以将其传递给其他组件或执行任何其他操作 // 例如,你可以在一个 TextView 中显示选择的日期 String selectedDate = String.format("%d-%02d-%02d", year, month + 1, dayOfMonth); // textView.setText(selectedDate); } } ``` 然后,在你的活动或片段中调用`DatePickerDialogFragment`来显示日期选择器对话框。 ```java public class MainActivity extends AppCompatActivity { // ... private void showDatePickerDialog() { DialogFragment newFragment = new DatePickerDialogFragment(); newFragment.show(getSupportFragmentManager(), "datePicker"); } // ... } ``` 当用户选择日期后,`onDateSet`方法将被调用,并传递选择的年、月和日。你可以在此方法中进行任何你想要的后续操作,例如更新文本视图中的日期。 请注意,以上代码只是一个简单的示例,你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yyxhzdm

你的鼓励是我创作的最大动力!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值