Android之简单实现滚动时间选择弹框

本文详细介绍了在Android应用中实现时间选择器的具体步骤,包括引用模块、定义全局变量、实例化选择器、设置时间范围及回调函数,以及如何格式化显示选中的时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:效果图

二:实现步骤

1:引用module,等会该module我会上传的,下载引用就行了

2:a:全局变量

private TimePickerView pvTime;//时间选择器

b:实例化

 pvTime = new TimePickerView(this, TimePickerView.Type.YEAR_MONTH_DAY);
        //时间选择后回调
        pvTime.setOnTimeSelectListener(new TimePickerView.OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date) {
                //赋值文本框
                edit_yxq.setText(getTime(date));//getTime方法为格式化时间
            }
        });

c:点击事件触发弹框

  //第一个参数(当前时间前n年)第二个参数(当前时间后n年)
                pvTime.setRange(DateUtils.getCurrentYear() - 5, DateUtils.getCurrentYear()+20);
                pvTime.setTime(new Date());
                pvTime.setCyclic(false);
                pvTime.show();

d:格式化显示时间

 /**
     * 格式化显示时间
     *
     * @param date
     * @return
     */
    public static String getTime(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
        return format.format(date);
    }

e:工具类代码

package com.mago.sports.ui;

import android.util.Log;

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

/**
 * Created by :caoliulang
 * ❤
 * Creation time :2022/8/31
 * ❤
 * Function :
 */
public class DateUtils {


    private static SimpleDateFormat sdf;
    int type = -1;

    public DateUtils() {
        sdf = new SimpleDateFormat("yyyy-MM-dd");
    }

    public DateUtils(int i) {
        sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        this.type = i;
    }

    public static long getStringToDate(String dateString) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        try {
            date = dateFormat.parse(dateString);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return date.getTime();
    }

    //获取当前日期
    public String getToday() {
        Date d = new Date();
        String date = sdf.format(d);
        return date;
    }


    public static String getRetureDay() {
        Date date = new Date();
        SimpleDateFormat f = new SimpleDateFormat("yyyy年MM月dd日");
        return f.format(date);

    }
    public static String getRetureDayt() {
        Date date = new Date();
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
        return f.format(date);
    }
    public static String getRetureDaytcll() {
        Date date = new Date();
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM");
        return f.format(date);
    }

    //截取本月
    public int getCurrentMonth() {
        Date d = new Date();
        String t = sdf.format(d);

        String[] strs = t.split("-");
        int m = Integer.valueOf(strs[1]);

        Log.e("LOG", d.toString());
        return m;
    }

    //截取本年
    public static int getCurrentYear() {
        Date d = new Date();
        sdf = new SimpleDateFormat("yyyy-MM-dd");
        String t = sdf.format(d);

        String[] strs = t.split("-");
        int y = Integer.valueOf(strs[0]);
        return y;
    }

    public int getCurrenDay() {

        Date d = new Date();
        String t = sdf.format(d);

        String[] strs = t.split("-");
        int m = Integer.valueOf(strs[2]);
        int day = Integer.valueOf(strs[2]);
        return day;
    }

    //获取昨天的日期
    public String getDateOfYesterday() {
        Calendar c = Calendar.getInstance();
        long t = c.getTimeInMillis();
        long l = t - 24 * 3600 * 1000;
        Date d = new Date(l);
        String s = sdf.format(d);
        return s;
    }

    //获取上个月的第一天
    public String getFirstDayOfLastMonth() {
        String str = "";
        Calendar lastDate = Calendar.getInstance();
        lastDate.set(Calendar.DATE, 1); //set the date to be 1
        lastDate.add(Calendar.MONTH, -1);//reduce a month to be last month
//		lastDate.add(Calendar.DATE,-1);//reduce one day to be the first day of last month

        str = sdf.format(lastDate.getTime());
        return str;
    }

    // 获取上个月的最后一天
    public String getLastDayOfLastMonth() {
        String str = "";
        Calendar lastDate = Calendar.getInstance();
        lastDate.set(Calendar.DATE, 1);//
        lastDate.add(Calendar.MONTH, -1);//
        lastDate.roll(Calendar.DATE, -1);//
        str = sdf.format(lastDate.getTime());
        return str;
    }

    //获取本月第一天
    public String getFirstDayOfThisMonth() {
        String str = "";
        Calendar lastDate = Calendar.getInstance();
        lastDate.set(Calendar.DATE, 1);//
//		lastDate.add(Calendar.MONTH,-1);//
//		lastDate.add(Calendar.DATE,-1);//

        str = sdf.format(lastDate.getTime());
        return str;
    }

    //获取本月最后一天
    public String getLastDayOfThisMonth() {
        String str = "";
        Calendar lastDate = Calendar.getInstance();
        lastDate.set(Calendar.DATE, 1);//
        lastDate.add(Calendar.MONTH, 1);//
        lastDate.add(Calendar.DATE, -1);//

        str = sdf.format(lastDate.getTime());
        return str;
    }

    //判断闰年
    public static boolean isLeapYear(int year) {
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            return true;
        }
        return false;
    }

    //获取传入的时间字符串的年
    public int getYear(String s) {
        try {
            Date date = sdf.parse(s);
            return date.getYear();
        } catch (ParseException e) {
            e.printStackTrace();
            return 0;
        }

    }

    /**
     * 获取传入的时间字符串的月
     *
     * @param s
     * @return
     */
    public int getMonth(String s) {
        String[] strs = s.split("-");
        // Log.e("LOG",strs[1]);
        return Integer.valueOf(strs[1]);
    }

    public int getDay(String s) {
        String[] strs = s.split("-");
        if (type == -1) {
            try {
                return Integer.valueOf(strs[2]);
            } catch (Exception e) {
                String[] sp = strs[2].split(" ");
                return Integer.valueOf(sp[0]);
            }

        } else {
            String[] sp = strs[2].split(" ");
            return Integer.valueOf(sp[0]);
        }
    }

    /**
     * 获取字符串中的小时
     *
     * @param s 字符串
     * @return 小时(24小时制)
     */
    public int getHours(String s) {
        Log.e("LOG", s);
        String[] strs = s.split(":");
        return Integer.valueOf(strs[0]);
    }


    public int getWeek(String s) {
        try {
            Date d = sdf.parse(s);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(d);
            int intWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
            return intWeek;
        } catch (ParseException e) {
            e.printStackTrace();
            return -1;
        }
    }


    public String week(String s) {
        try {
            Date d = sdf.parse(s);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(d);
            int intWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;

            String we = "";
            switch (intWeek) {
                case 0:
                    we = "周日";
                    break;
                case 1:
                    we = "周一";
                    break;
                case 2:
                    we = "周二";
                    break;
                case 3:
                    we = "周三";
                    break;
                case 4:
                    we = "周四";
                    break;
                case 5:
                    we = "周五";
                    break;
                case 6:
                    we = "周六";
                    break;

            }
            return we;
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }


    public static String getSpecifiedDayBefore(String specifiedDay) {
//SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Calendar c = Calendar.getInstance();
        Date date = null;
        try {
            date = new SimpleDateFormat("yyyy-MM-dd").parse(specifiedDay);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        c.setTime(date);
        int day = c.get(Calendar.DATE);
        c.set(Calendar.DATE, day - 1);

        String dayBefore = new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
        return dayBefore;
    }


}

f:导入module有的会如下错误

Caused by: org.gradle.api.plugins.UnknownPluginException: Plugin with id 'com.github.dcendents.android-maven' not found.

 g:解决办法(在根目录build.gradle的dependencies下添加如下代码)

 //1.自动化maven打包插件
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
        //2.自动上传至Bintray平台插件
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'

  module下载地址链接:pickerview.zip_android滚动选择时间-互联网文档类资源-优快云下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

叶已初秋

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

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

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

打赏作者

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

抵扣说明:

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

余额充值