精华内容
下载资源
问答
  • 这是一个时间选择器,自定义的轮子,选择不同的年月日。有需要的朋友可以下载一下。
  • jQuery多功能年月日星期时间特效插件下载
  • 时间年月日选择器

    2016-03-28 09:37:15
    时间选择器,年月日。比较方便改动。
  • 时间年月日PPT课件

    2020-12-25 22:14:42
    本课件充分展示了关于年月日的相关知识点,帮助老师更好的完成本科的教学,是很好的教学辅助工具。...该文档为时间年月日PPT课件,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • 项目开发中 如果你需要一个年月日时分秒类型时间选择器 用DataPicker和TimePicker联动去实现得话 会非常得不方便 会碰到布局不协调得问题 灵活性很低 可实现的布局也就两种 所以为了更好的效果 个人建议你使用 ...

    项目开发中 如果你需要一个年月日时分秒类型时间选择器 用DataPicker和TimePicker联动去实现得话 会非常得不方便 会碰到布局不协调得问题 灵活性很低 可实现的布局也就两种 所以为了更好的效果 个人建议你使用 numberPicker 数字选择器 去实现 本人思路是 numberpicker结合PopupWindow 去实现 简单实现代码奉上 欢迎各位大神指正

    第一步 popupwindow 的布局效果(底部有图)及xml文件

    可根据自己得需要布局 底部效果图 是本案样例

    第二步 自定义PopupWindow java 代码

    public SPopupWindow(Context context, View.OnClickListener clickListener){

    // 填充试图 实例化空间

    this.view = LayoutInflater.from(context).inflate(R.layout.popupwindow,null);

    day = (NumberPicker) view.findViewById(R.id.day);

    hour = (NumberPicker) view.findViewById(R.id.hour);

    minte = (NumberPicker) view.findViewById(R.id.minte);

    time = (NumberPicker) view.findViewById(R.id.time);

    quxiao = (Button) view.findViewById(R.id.quxiao);

    year = (NumberPicker) view.findViewById(R.id.year);

    month = (NumberPicker) view.findViewById(R.id.month);

    // 按钮点击事件

    this.setOutsideTouchable(true);

    quxiao.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

    dismiss();

    }

    });

    queren = (Button) view.findViewById(R.id.queren);

    queren.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

    int yearValue = year.getValue();

    int monthValue = month.getValue();

    int dayValue = day.getValue();

    int timeValue = time.getValue();

    int hourValue = hour.getValue();

    int minteValue = minte.getValue();

    String time = ""+yearValue+monthValue+dayValue+timeValue+hourValue+minteValue;

    if (onClickButton!=null){

    onClickButton.OnClickButton(time);

    }

    dismiss();

    }

    });

    this.view.setOnTouchListener(new View.OnTouchListener() {

    public boolean onTouch(View v, MotionEvent event) {

    int height = view.findViewById(R.id.pop_layout).getTop();

    int y = (int) event.getY();

    if (event.getAction() == MotionEvent.ACTION_UP) {

    if (y < height) {

    dismiss();

    }

    }

    return true;

    }

    });

    /* 设置弹出窗口特征 */

    // 设置视图

    this.setContentView(this.view);

    // 设置弹出窗体的宽和高

    this.setHeight(RelativeLayout.LayoutParams.WRAP_CONTENT);

    this.setWidth(RelativeLayout.LayoutParams.MATCH_PARENT);

    // 设置弹出窗体可点击

    this.setFocusable(true);

    // 实例化一个ColorDrawable颜色为半透明

    ColorDrawable dw = new ColorDrawable(0xb0000000);

    // 设置弹出窗体的背景

    this.setBackgroundDrawable(dw);

    // 获取当前时间 取出年月日时分 作为当前得时间基点

    long t = System.currentTimeMillis();

    SimpleDateFormat df1 = new SimpleDateFormat("yyyy");

    SimpleDateFormat df2 = new SimpleDateFormat("MM");

    SimpleDateFormat df3 = new SimpleDateFormat("dd");

    SimpleDateFormat df4 = new SimpleDateFormat("HH");

    SimpleDateFormat df5 = new SimpleDateFormat("mm");

    String y = df1.format(t);

    final String m = df2.format(t);

    final String d = df3.format(t);

    final String h = df4.format(t);

    final String mi = df5.format(t);

    Log.d("tag", "SPopupWindow: BBB---"+y+m+d+h+mi);

    final String[] noons = {"上午","下午"};

    day.setMaxValue(31);

    day.setMinValue(1);

    time.setDisplayedValues(noons);

    day.setValue(Integer.valueOf(d));

    time.setMaxValue(noons.length-1);

    time.setMinValue(0);

    time.setValue(0);

    hour.setMaxValue(12);

    hour.setMinValue(1);

    hour.setValue(Integer.valueOf(h));

    minte.setMaxValue(60);

    minte.setMinValue(1);

    minte.setValue(Integer.valueOf(mi));

    year.setMinValue(Integer.valueOf(y));

    year.setMaxValue(Integer.valueOf(y)+20);

    year.setValue(Integer.valueOf(y));

    month.setMinValue(1);

    month.setMaxValue(12);

    month.setValue(Integer.valueOf(m));

    // numberpicker 内容的变化监听 时间得逻辑处理可在此处

    day.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

    @Override

    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

    Log.d(“tt”, “onValueChange: day–>”+newVal);

    day.setValue(newVal);

    if (oldVal!=newVal){

    hour.setValue(1);

    }else {

    hour.setValue(Integer.valueOf(h));

    }

    }

    });

    time.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

    @Override

    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

    Log.d(“tt”, “onValueChange: tiem–>”+noons[newVal].toString());

    time.setValue(newVal);

    }

    });

    hour.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

    @Override

    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

    Log.d("tt", "onValueChange: hour-->"+ newVal);

    hour.setValue(newVal);

    if (oldVal!=newVal){

    minte.setValue(1);

    }else {

    minte.setValue(Integer.valueOf(mi));

    }

    }

    });

    minte.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

    @Override

    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

    }

    });

    month.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

    @Override

    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

    month.setValue(newVal);

    if (oldVal!=newVal){

    day.setValue(1);

    }else {

    day.setValue(Integer.valueOf(d));

    }

    }

    });

    year.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

    @Override

    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

    year.setValue(newVal);

    if (oldVal!= newVal){

    month.setValue(1);

    }else {

    month.setValue(Integer.valueOf(m));

    }

    }

    });

    }

    // 定义按钮得点击接口

    public interface OnClickButton{

    void OnClickButton(String s);

    }

    // 设置按钮点击方法

    public void setOnCilckButton(OnClickButton onClickButton){

    this.onClickButton= onClickButton;

    }

    第三步 在需要activity 中实例化popupwindow 并调用

    takePhotoPopWin = new SPopupWindow(this,this);

    // 设置Popupwindow显示位置(从底部弹出)

    takePhotoPopWin.showAtLocation(findViewById(R.id.main_view), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);

    params = getWindow().getAttributes();

    //当弹出Popupwindow时,背景变半透明

    params.alpha=0.7f;

    getWindow().setAttributes(params);

    //设置Popupwindow关闭监听,当Popupwindow关闭,背景恢复1f

    takePhotoPopWin.setOnDismissListener(new PopupWindow.OnDismissListener() {

    @Override

    public void onDismiss() {

    params = getWindow().getAttributes();

    params.alpha=1f;

    getWindow().setAttributes(params);

    }

    });

    takePhotoPopWin.setOnCilckButton(new SPopupWindow.OnClickButton() {

    @Override

    public void OnClickButton(String s) {

    Log.d(“tt”, “OnClickButton:———– “+s);

    text.setText(s);

    }

    效果图

    f33808ced02aa7b7bbe0a340912c5b9d.png

    });

    xml布局效果

    此时 属于你自己的时间选择器 就完成了 超级简单

    800c5287cf6a9f997501d9ef9a4bbfad.png

    喜欢得可以点个赞

    下载链接 http://download.csdn.net/download/naide_s/9992028

    展开全文
  • 然后我去小程序开发文档上看了看好像没有直接可以选择年月日时分秒的选择器组件,所以周末我就花了些时间封装了一个可以选择年月日时分秒和年月日时分的时间选择器组件。希望能够帮助到有需要的人! 代码我已经提交...

    小程序自定义picker实现年月日时分和年月日时分秒时间选择器

    最近在做公司的一个小程序项目中需要用到选择年月日时分秒的地方,然后我去小程序开发文档上看了看好像没有直接可以选择年月日时分秒的选择器组件,所以周末我就花了些时间封装了一个可以选择年月日时分秒和年月日时分的时间选择器组件。希望能够帮助到有需要的人!

    代码我已经提交到码云上面了,可以通过这个链接下载我的代码:
    https://gitee.com/yuanyifei666/wxDateTimePicker.git

    下载后在components目录下的date-time-picker就是我封装的时间选择器组件了
    在这里插入图片描述
    直接把我的这date-time-picker目录复制到你的项目里,然后在要使用到该组件的页面的json文件中引入该组件,注意路径要正确!(我这里以index页面为例子)

    {
      "usingComponents": {
        "date-time-picker": "/components/date-time-picker/index"
      },
      "navigationBarTitleText": "封装时间选择器组件"
    }
    

    然后在index.wxml文件中使用该组件

    <!--pages/index/index.wxml-->
    <date-time-picker
       mode="dateminute" 
       value="{{dateMinute}}"
       bindchange="selectDateMinuteChange"> 
      <view class="show-date-time-box">年月日时分: {{dateMinute}}</view>
    </date-time-picker>
     
     <date-time-picker
       mode="datetime" 
       value="{{dateSecond}}"
       bindchange="selectDateSecondChange"> 
      <view class="show-date-time-box">年月日时分秒: {{dateSecond}}</view>
    </date-time-picker>
    

    属性说明:
    1、mode:选择器类型
    mode 的合法值:
    dateminute: 年月日时分选择器(2019-11-30 11:03)
    datetime: 时间选择器(2019-11-30 11:03:17)
    2、value:选择器的值
    3、bindchange:value 改变时触发 change 事件,可以获得选择的值

    index.js文件里的代码如下:

    //index.js
    //获取应用实例
    const app = getApp()
    
    Page({
      data: {
        dateMinute: '',
        dateSecond: ''
      },
      /**
       * 年月日时分选择类型的回调函数,可以在该函数得到选择的时间
       */
      selectDateMinuteChange(ev) {
        this.setData({
          dateMinute: ev.detail.value
        })
      },
      /**
       * 年月日时分秒选择类型的回调函数,可以在该函数得到选择的时间
       */
      selectDateSecondChange(ev) {
        this.setData({
          dateSecond: ev.detail.value
        })
      }
    })
    
    

    以上就是组件简单的使用,下面就是该组件具体的实现代码了
    js代码:

    // components/date-time-picker/index.js
    
    Component({ 
      /**
       * 定义组件生命周期函数
       */
      lifetimes: {
        attached() {
          // =====初始化时间选择器====
          this._initDateTimePickerFn()
        },
        detached() {
    
        }
      },
      /**
       * 对 <2.2.3 版本基础库的兼容
       */
      attached() {
        // =====初始化时间选择器====
        this._initDateTimePickerFn()
      },
      detached() {
      
      },
      /**
       * 组件相关配置项
       */
      options: {
        multipleSlots: true // 开启使用多个插槽
      },
      /**
       * 组件的属性列表
       */
      properties: {
        mode: {  // 选择器类型
          type: String,
          require: true
        },
        value: { // 回显的时间
          type: String,
          value: ''
        }
      },
    
      /**
       * 组件的初始数据
       */
      data: {
        rangeList: [],
        rangeValue: [],
        dateDetails: ['年','月', '时', '分', '秒']
      },
    
      /**
       * 组件的方法列表
       */
      methods: {
        /**
         * 初始化时间选择器
         */
        _initDateTimePickerFn() {
          try {
            const { value, mode} = this.data
            if (mode != 'dateminute' && mode != 'datetime') {
              throw new CommonException('请输入合法的时间选择器类型!', -1)
            }
            //====获取到当前时间===
            let showTimeValue = this._validateShowTime(value, mode)
    
            // ====获取年份====
            const currentYear = showTimeValue.substring(0, showTimeValue.indexOf('-'))
            const currentMouth = showTimeValue.split(" ")[0].split('-')[1]
            const yearList = this._gotDateTimeList({
              _start: Number(currentYear) - 100,
              _end: Number(currentYear) + 100, _type: 0
            })
            // ====获取月份===
            const monthList = this._gotDateTimeList({ _start: 1, _end: 12, _type: 1 })
            //====获取天数===
            const dayList = this._gotDayList(currentYear, currentMouth)
            // ====获取小时===
            const hourList = this._gotDateTimeList({ _start: 0, _end: 23, _type: 2 })
            // ====获取分钟===
            const munithList = this._gotDateTimeList({ _start: 0, _end: 59, _type: 3 })
            // ====获取秒===
            const secondList = this._gotDateTimeList({ _start: 0, _end: 59, _type: 4 })
    
            let rangeList = new Array()
            rangeList.push(yearList)
            rangeList.push(monthList)
            rangeList.push(dayList)
            rangeList.push(hourList)
            rangeList.push(munithList)
            mode === "datetime" && rangeList.push(secondList)
            this.setData({
              rangeList
            }, () => {
              this._echoDateTime(showTimeValue) // 初始化时间显示
            })
          } catch(err) {
            console.log(err)
          }
        },
        /**
         * 验证显示的时间是否合法
         * @param {Number} _value 要验证的时间
         * @param {Number} _mode  选择器类型
         */
        _validateShowTime(_value, _mode){
          let currentTime = formatTime(new Date()).replace(/\//g, "-")
          let showTimeValue = _value.trim() || currentTime
          const secondReg = /^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}$/
          const munithReg = /^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}$/
          if (_mode === 'dateminute') { // yyyy-MM-dd HH:mm
            // 验证是否合法
            secondReg.test(showTimeValue) && (showTimeValue = showTimeValue.substring(0, showTimeValue.lastIndexOf(':')))
            munithReg.test(showTimeValue) || (showTimeValue = currentTime.substring(0, currentTime.lastIndexOf(':')))
          } else { // yyyy-MM-dd HH:mm:ss
            munithReg.test(showTimeValue) && (showTimeValue += ':00')
            secondReg.test(showTimeValue) || (showTimeValue = currentTime)
          }
          return showTimeValue
        },
      
        /**
         * 获取年份、月份、小时、分钟、秒
         * @param {Number} _start 开始值
         * @param {Number} _end   结束值
         * @param {Number} _type  类型
         */
        _gotDateTimeList({_start, _end, _type}) {
          let resultDataList = new Array()
          for (let i = _start; i <= _end; i ++) {
            resultDataList.push(this._addZore(i) + this.data.dateDetails[_type])
          }
          return resultDataList
        },
        /**
         * 获取天数
         * @param {Number} _year  年份
         * @param {Number} _mouth  月份
         */
        _gotDayList(_year, _mouth) {
          let now = new Date(_year, _mouth, 0)
          const dayLength = now.getDate()
          let dayList = new Array()
          for(let i = 1; i <= dayLength; i++) {
            dayList.push(this._addZore(i) + '日')
          }
          return dayList
        },
        /**
         * 补零
         * @param {Number} _num  数值
         */
        _addZore(_num) {
          return _num <  10 ? '0' + _num : _num.toString()
        },
        /**
         * 回显时间
         * @param {Number} _showTimeValue  初始化时要显示的时间
         */
        _echoDateTime(_showTimeValue) {
          const rangeList = this.data.rangeList
          let rangeValue = new Array()
          const list = _showTimeValue.split(/[\-|\:|\s]/)
          list.map((el, index) => {
            rangeList[index].map((item, itemIndex) => {
              item.indexOf(el) !== -1 && rangeValue.push(itemIndex)
            })
          })
          this.setData({
            rangeValue
          })
        },
        /**
         * 点击确定时触发的回调函数
         * @param {Number} ev
         */
        selectChangeFn(ev) {
          const selectValues = ev.detail.value
          const rangeList = this.data.rangeList
          let dateTime = ''
          selectValues.map((el, index) => {
            dateTime += rangeList[index][el].substring(0, rangeList[index][el].length - 1)
            if(index == 0 || index == 1) {
              dateTime += '-'
            } else if (index == 3 || (index == 4 && index != selectValues.length - 1)) {
              dateTime += ':'
            } else if(index == 2 && index != selectValues.length -1){
              dateTime += ' '
            }
          })
          // ====触发父组件把值传递给父组件====
          this.triggerEvent('change', {value: dateTime})
        },
        /**
         *  当具体的一项的值发生改变时触发
         *  @param {Number} ev
         */
        selectColumnChangeFn(ev) {
          const { column, value } = ev.detail
          let { rangeList, rangeValue } = this.data
          let selectValue = Number(rangeList[column][value]
            .substring(0, rangeList[column][value].length - 1))
          if (column === 1) { // 改变月份 
            const currentYear = Number(rangeList[0][rangeValue[0]]
              .substring(0, rangeList[0][rangeValue[0]].length - 1))
            const dayList = this._gotDayList(currentYear, selectValue)
            rangeList[column + 1] = dayList
          }
          this.setData({
            rangeList
          })
        }
      }
    })
    
    // 自定义异常
    function CommonException(errMsg, code){
      this.errMsg = errMsg
      this.code = code
    }
    
    // =====格式化日期===
    const formatTime = date => {
      const year = date.getFullYear()
      const month = date.getMonth() + 1
      const day = date.getDate()
      const hour = date.getHours()
      const minute = date.getMinutes()
      const second = date.getSeconds()
    
      return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
    }
    
    const formatNumber = n => {
      n = n.toString()
      return n[1] ? n : '0' + n
    }
    
    

    json文件中的代码:

    {
      "component": true,
      "usingComponents": {}
    }
    

    wxml文件中的代码:

    <!--components/date-time-picker/index.wxml-->
    <picker mode="multiSelector" range="{{rangeList}}" value="{{rangeValue}}"
      bindchange="selectChangeFn" bindcolumnchange="selectColumnChangeFn">
      <slot></slot>
    </picker>
     
    

    wxss文件中就没有样式了,代码就这么多,也很简单,如果哪位大佬觉得我写的代码有问题的话还望多多指正,谢谢!

    展开全文
  • 时间年月日+星期的代码
  • 本课件充分展示了关于年月日的相关知识点,帮助老师更好的完成本科的教学,是很好的教学辅助工具。...该文档为一天的时间年月日PPT课件,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • json格式的时间显示为:Date(1377828670436)需要转换为正常年月日,具体的实现思路及代码如下,感兴趣的朋友可以参考下
  • jQuery年月日选择手机代码是一款实用的年月日选择代码,可自定义设置某个时间段开始和结束时间
  • 微信小程序 年月日时分组件 时间选择

    万次阅读 多人点赞 2018-12-27 15:08:15
    最近做自己的项目时,需要用到年月日时分的日期选择器,找了官网发现没有这种的,于是就只能自己写啦。 使用微信小程序原生packer实现多列选择器:mode = multiSelector 废话不多,效果看图 文末附上下载链接 后续...

    最近做自己的项目时,需要用到年月日时分的日期选择器,找了官网发现没有这种的,于是就只能自己写啦。

    使用微信小程序原生packer实现 多列选择器:mode = multiSelector

    废话不多,效果看图 文末附上下载链接 后续会不断优化控件 支持更多操作 用到的朋友给个star小星星吧~

    2019-01-28更新 添加可以指定默认日期 修复了一些BUG git上已上传最新代码 有问题可以给我留言 谢谢

    2019-02-27 添加是否允许点击属性disabled true不允许点击 false允许点击 默认false

    2019-04-08 修复不添加data属性 不显示默认日期BUG

    添加开始日期startDate 结束日期endDate 如果都没添加 默认显示3年, 如果只添加startDate 则结束时间为2099 如果只添加endData则开始日期为1900  目前只支持限制年份,后续会添加所有限制

    2019-04-09 修复年份显示BUG

    2019-04-10 添加placeholder属性 提示文字 可以默认不显示日期 添加后初始化onPickerChange 不返回数据 

    2019-08-07 修改开始日期startDate 结束日期endDate 添加所有限制 之前只能限制年份 现在做到全支持 格式为2019-02-02 15:33(务必遵守)代码写的有点复杂 后期再优化吧 有BUG请尽快联系我修改,防止老年痴呆复发。。。谢谢

    2019-11-20 修改页面不渲染BUG

    2020-08-28 修改ios异常bug 原因ios转换日期 不识别'2019-01-01 12:37' 只识别'2019/01/01 12:37' 现已做修改 把传入日期'-'改为'/' (之前代码已做'-'改为'/'转换处理 但不知道怎么的 会丢失某一列数据 原因不明 未复现 再出现请联系我) 

    感谢各位小哥哥 小姐姐的小星星 谢谢大家

     

    实现思路:除了天数会跟随月份改变外,其余都为固定值 

    代码如下

    pickerYMDHM.js文件

    // components/pickerYMDHM/pickerYMDHM.js
    Component({
      /**
       * 组件的属性列表
       */
      properties: {
        date: {            // 属性名
          type: null,     // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)
          value: null     // 属性初始值(可选),如果未指定则会根据类型选择一个
        },
        startDate: {
          type: null,     // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)
          value: null     // 属性初始值(可选),如果未指定则会根据类型选择一个
        },
        endDate: {
          type: null,     // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)
          value: null     // 属性初始值(可选),如果未指定则会根据类型选择一个
        },
        disabled: {
          type: null,     // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)
          value: false     // 属性初始值(可选),如果未指定则会根据类型选择一个
        },
        placeholder: {
          type: null,     // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)
          value: null     // 属性初始值(可选),如果未指定则会根据类型选择一个
        }
      },
    
      /**
       * 组件的初始数据
       */
      data: {
        pickerArray: [],//日期控件数据list
        pickerIndex: [],//日期控件选择的index
        chooseIndex: [],//日期控件确认选择的index
        chooseArray: [],//日期控件确认选择后的list
        stDate: '',//开始日期
        enDate: ''//结束日期
      },
    
      /**
       * 组件的方法列表
       */
      methods: {
        _onInit() {
          let date = new Date();
          if (this.data.date != null) {
            let str = this.data.date;
            str = str.replace(/-/g, '/');
            date = new Date(str);
          }
          let pickerArray = this.data.pickerArray;
          // console.log(date.getFullYear());
          //默认选择3年内
          let year = [];
          let month = [];
          let day = [];
          let time = [];
          let division = [];
          let startDate = '';
          let endDate = ''
          let tpData = {};
          if (this.data.startDate != null && this.data.endDate == null) {
            //如果存在开始时间,则默认设置结束时间为2099
            startDate = this._getDefaultDate(this.data.startDate);
            endDate = this._getDefaultDate("2099-12-31 23:59");
            tpData = this._getModify(date, startDate, endDate);
          }
          if (this.data.endDate != null && this.data.startDate == null) {
            //如果存在结束时间,不存在开始时间 则默认设置开始时间为1900
            startDate = this._getDefaultDate("1900-01-01 00:00");
            endDate = this._getDefaultDate(this.data.endDate);
            tpData = this._getModify(date, startDate, endDate);
          }
          if (this.data.endDate != null && this.data.startDate != null) {
            startDate = this._getDefaultDate(this.data.startDate);
            endDate = this._getDefaultDate(this.data.endDate);
            tpData = this._getModify(date, startDate, endDate);
          }
          // console.log(year);
          if (this.data.startDate == null && this.data.endDate == null) {
            startDate = this._getDefaultDate("1901-01-01 00:00");
            endDate = this._getDefaultDate("2099-12-31 23:59");
            tpData = this._getModify(date, startDate, endDate);
          }
          
          if (date > endDate || date < startDate) {
            this.setData({
              placeholder: "默认日期不在时间范围内"
            })
            return;
          }
          // console.log(division);
          pickerArray[0] = tpData.year;
          pickerArray[1] = tpData.month;
          pickerArray[2] = tpData.day;
          pickerArray[3] = tpData.time;
          pickerArray[4] = tpData.division;
          let mdate = {
            date: date,
            year: date.getFullYear() + '',
            month: date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1 + '',
            day: date.getDate() < 10 ? '0' + date.getDate() : date.getDate() + '',
            time: date.getHours() < 10 ? '0' + date.getHours() : date.getHours() + '',
            division: date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() + ''
          }
          mdate.placeholder = mdate.year + '-' + mdate.month + '-' + mdate.day + ' ' + mdate.time + ':' + mdate.division;
          this.setData({
            pickerArray,
            pickerIndex: tpData.index,
            chooseIndex: tpData.index,
            chooseArray: pickerArray,
            placeholder: this.data.placeholder != null ? this.data.placeholder : mdate.placeholder,
            stDate: startDate,
            enDate: endDate
          })
          // console.log(date);
          //设置placeholder属性后 初始化不返回日期
          if (this.data.placeholder == null){
            this.triggerEvent('onPickerChange', mdate);
          }
          // console.log(this.data.pickerArray);
          // console.log(this._getNumOfDays(2018, 10));
        },
        /**
         * 
         */
        _getDefaultDate(date) {
          date = date.replace(/-/g, '/');
          return new Date(date);
        },
        /**
    	 * 
    	 * 获取开始日期 结束日期 中间日期
    	 * @param {date} newDate 默认日期
    	 * @param {date} startDate 设置开始日期
    	 * @param {date} stopDate 设置结束日期
    	 * @returns data 包含年月日时分数组
    	 */
        _getModify(newDate, startDate, stopDate) {
          let data = {
            year: [],
            month: [],
            day: [],
            time: [],
            division: [],
            index:[0,0,0,0,0]
          }
          let nYear = newDate.getFullYear();
          let nMonth = newDate.getMonth() + 1;
          let nDay = newDate.getDate();
          let nHours = newDate.getHours();
          let nMinutes = newDate.getMinutes();
    
          let tYear = startDate.getFullYear();
          let tMonth = startDate.getMonth() + 1;
          let tDay = startDate.getDate();
          let tHours = startDate.getHours();
          let tMinutes = startDate.getMinutes();
    
          let pYear = stopDate.getFullYear();
          let pMonth = stopDate.getMonth() + 1;
          let pDay = stopDate.getDate();
          let pHours = stopDate.getHours();
          let pMinutes = stopDate.getMinutes();
          for (let i = tYear; i <= pYear; i++) {
            data.year.push({ id: i, name: i + "年" });
          }
          data.index[0] = nYear - tYear;
          //判断年份是否相同 相同则继续
          if (nYear == tYear){
            //判断结束年份 赋值月份 如果结束年份相同则把结束月份 一并赋值
            if (nYear == pYear){
              for (let i = tMonth; i <= pMonth; i++) {
                data.month.push({ id: i, name: i + "月" });
              }
              data.index[1] = nMonth - tMonth < 0 ? 0 : nMonth - tMonth;
    
              if (nMonth == tMonth){
                if (nMonth == pMonth){
                  for (let i = tDay; i <= pDay; i++) {
                    data.day.push({ id: i, name: i + "日" });
                  }
                  data.index[2] = nDay - tDay < 0 ? 0 : nDay - tDay;
    
                  if (nDay == tDay){
                    if (nDay == pDay){
                      for (let i = tHours; i <= pHours; i++) {
                        if (i < 10) {
                          data.time.push({ id: i, name: "0" + i + "时" });
                        } else {
                          data.time.push({ id: i, name: i + "时" });
                        }
                      }
                      
                      data.index[3] = nHours - tHours < 0 ? 0 : nHours - tHours;
    
                      if (nHours == tHours){
                        if (nHours == pHours){
                          for (let i = tMinutes; i <= pMinutes; i++) {
                            if (i < 10) {
                              data.division.push({ id: i, name: "0" + i + "分" });
                            } else {
                              data.division.push({ id: i, name: i + "分" });
                            }
                          }
                          data.index[4] = nMinutes - tMinutes < 0 ? 0 : nMinutes - tMinutes;
                        } else {
                          for (let i = tMinutes; i <= 59; i++) {
                            if (i < 10) {
                              data.division.push({ id: i, name: "0" + i + "分" });
                            } else {
                              data.division.push({ id: i, name: i + "分" });
                            }
                          }
                          data.index[4] = nMinutes - tMinutes < 0 ? 0 : nMinutes - tMinutes;
                        }
                      } else {
                        if (nHours == pHours){
                          for (let i = 0; i <= pMinutes; i++) {
                            if (i < 10) {
                              data.division.push({ id: i, name: "0" + i + "分" });
                            } else {
                              data.division.push({ id: i, name: i + "分" });
                            }
                          }
                          data.index[4] = nMinutes;
                        } else {
                          for (let i = 0; i <= 59; i++) {
                            if (i < 10) {
                              data.division.push({ id: i, name: "0" + i + "分" });
                            } else {
                              data.division.push({ id: i, name: i + "分" });
                            }
                          }
                          data.index[4] = nMinutes;
                        }
                      }
                    } else {
                      for (let i = tHours; i <= 23; i++) {
                        if (i < 10) {
                          data.time.push({ id: i, name: "0" + i + "时" });
                        } else {
                          data.time.push({ id: i, name: i + "时" });
                        }
                      }
                      
                      data.index[3] = nHours - tHours < 0 ? 0 : nHours - tHours;
                      if (nHours == tHours) {
                        for (let i = tMinutes; i <= 59; i++) {
                          if (i < 10) {
                            data.division.push({ id: i, name: "0" + i + "分" });
                          } else {
                            data.division.push({ id: i, name: i + "分" });
                          }
                        }
                        data.index[4] = nMinutes - tMinutes < 0 ? 0 : nMinutes - tMinutes;
                      } else {
                        for (let i = 0; i <= 59; i++) {
                          if (i < 10) {
                            data.division.push({ id: i, name: "0" + i + "分" });
                          } else {
                            data.division.push({ id: i, name: i + "分" });
                          }
                        }
                        data.index[4] = nMinutes;
                      }
                    }
                  } else {
                    if (nDay == pDay){
                      for (let i = 0; i <= pHours; i++) {
                        if (i < 10) {
                          data.time.push({ id: i, name: "0" + i + "时" });
                        } else {
                          data.time.push({ id: i, name: i + "时" });
                        }
                      }
                      data.index[3] = nHours;
                      if (nHours == pHours){
                        for (let i = 0; i <= pMinutes; i++) {
                          if (i < 10) {
                            data.division.push({ id: i, name: "0" + i + "分" });
                          } else {
                            data.division.push({ id: i, name: i + "分" });
                          }
                        }
                        data.index[4] = nMinutes;
                      } else {
                        for (let i = 0; i <= 59; i++) {
                          if (i < 10) {
                            data.division.push({ id: i, name: "0" + i + "分" });
                          } else {
                            data.division.push({ id: i, name: i + "分" });
                          }
                        }
                        data.index[4] = nMinutes;
                      }
                    } else {
                      for (let i = 0; i <= 23; i++) {
                        if (i < 10) {
                          data.time.push({ id: i, name: "0" + i + "时" });
                        } else {
                          data.time.push({ id: i, name: i + "时" });
                        }
                      }
    
                      data.index[3] = nHours;
                      // console.log(time);
                      for (let i = 0; i <= 59; i++) {
                        if (i < 10) {
                          data.division.push({ id: i, name: "0" + i + "分" });
                        } else {
                          data.division.push({ id: i, name: i + "分" });
                        }
                      }
                      data.index[4] = nMinutes;
                    }
                  }
                } else {
                  let dayNum = this._getNumOfDays(nYear, nMonth);
                  for (let i = tDay; i <= dayNum; i++) {
                    data.day.push({ id: i, name: i + "日" });
                  }
                  data.index[2] = nDay - tDay < 0 ? 0 : nDay - tDay;
                  if (nDay == tDay) {
                    for (let i = tHours; i <= 23; i++) {
                      if (i < 10) {
                        data.time.push({ id: i, name: "0" + i + "时" });
                      } else {
                        data.time.push({ id: i, name: i + "时" });
                      }
                    }
                    
                    data.index[3] = nHours - tHours < 0 ? 0 : nHours - tHours;
                    if (nHours == tHours) {
                      for (let i = tMinutes; i <= 59; i++) {
                        if (i < 10) {
                          data.division.push({ id: i, name: "0" + i + "分" });
                        } else {
                          data.division.push({ id: i, name: i + "分" });
                        }
                      }
                      data.index[4] = nMinutes - tMinutes < 0 ? 0 : nMinutes - tMinutes;
                    } else {
                      for (let i = 0; i <= 59; i++) {
                        if (i < 10) {
                          data.division.push({ id: i, name: "0" + i + "分" });
                        } else {
                          data.division.push({ id: i, name: i + "分" });
                        }
                      }
                      data.index[4] = nMinutes;
                    }
                  } else {
                    for (let i = 0; i <= 23; i++) {
                      if (i < 10) {
                        data.time.push({ id: i, name: "0" + i + "时" });
                      } else {
                        data.time.push({ id: i, name: i + "时" });
                      }
                    }
                    
                    data.index[3] = nHours;
                    // console.log(time);
                    for (let i = 0; i <= 59; i++) {
                      if (i < 10) {
                        data.division.push({ id: i, name: "0" + i + "分" });
                      } else {
                        data.division.push({ id: i, name: i + "分" });
                      }
                    }
                    data.index[4] = nMinutes;
                  }
                }
              } else {
                if (nMonth == pMonth){
                  for (let i = 1; i <= pDay; i++) {
                    data.day.push({ id: i, name: i + "日" });
                  }
                  data.index[2] = nDay - 1;
                  if (nDay == pDay){
                    for (let i = 0; i <= pHours; i++) {
                      if (i < 10) {
                        data.time.push({ id: i, name: "0" + i + "时" });
                      } else {
                        data.time.push({ id: i, name: i + "时" });
                      }
                    }
                    data.index[3] = nHours;
                    if (nHours == pHours){
                      for (let i = 0; i <= pMinutes; i++) {
                        if (i < 10) {
                          data.division.push({ id: i, name: "0" + i + "分" });
                        } else {
                          data.division.push({ id: i, name: i + "分" });
                        }
                      }
                      data.index[4] = nMinutes;
                    } else {
                      for (let i = 0; i <= 59; i++) {
                        if (i < 10) {
                          data.division.push({ id: i, name: "0" + i + "分" });
                        } else {
                          data.division.push({ id: i, name: i + "分" });
                        }
                      }
                      data.index[4] = nMinutes;
                    }
                  } else {
                    for (let i = 0; i <= 23; i++) {
                      if (i < 10) {
                        data.time.push({ id: i, name: "0" + i + "时" });
                      } else {
                        data.time.push({ id: i, name: i + "时" });
                      }
                    }
                    data.index[3] = nHours;
                    // console.log(time);
                    for (let i = 0; i <= 59; i++) {
                      if (i < 10) {
                        data.division.push({ id: i, name: "0" + i + "分" });
                      } else {
                        data.division.push({ id: i, name: i + "分" });
                      }
                    }
                    data.index[4] = nMinutes;
                  }
                } else {
                  let dayNum = this._getNumOfDays(nYear, nMonth);
                  for (let i = 1; i <= dayNum; i++) {
                    data.day.push({ id: i, name: i + "日" });
                  }
                  data.index[2] = nDay - 1;
                  for (let i = 0; i <= 23; i++) {
                    if (i < 10) {
                      data.time.push({ id: i, name: "0" + i + "时" });
                    } else {
                      data.time.push({ id: i, name: i + "时" });
                    }
                  }
    
                  data.index[3] = nHours;
                  // console.log(time);
                  for (let i = 0; i <= 59; i++) {
                    if (i < 10) {
                      data.division.push({ id: i, name: "0" + i + "分" });
                    } else {
                      data.division.push({ id: i, name: i + "分" });
                    }
                  }
                  data.index[4] = nMinutes;
                }
              } 
            } else {//只需要开始日期 因为结束年份不同 所以不会用到结束日期
              for (let i = tMonth; i <= 12; i++) {
                data.month.push({ id: i, name: i + "月" });
              }
              data.index[1] = nMonth - tMonth < 0 ? 0 : nMonth - tMonth;
              if (nMonth == tMonth){
                let dayNum = this._getNumOfDays(nYear, nMonth);
                for (let i = tDay; i <= dayNum; i++) {
                 data.day.push({ id: i, name: i + "日" });
                }
                data.index[2] = nDay - tDay < 0 ? 0 : nDay - tDay;
                if (nDay == tDay){
                  for (let i = tHours; i <= 23; i++) {
                    if (i < 10) {
                      data.time.push({ id: i, name: "0" + i + "时" });
                    } else {
                      data.time.push({ id: i, name: i + "时" });
                    }
                  }
                  
                  data.index[3] = nHours - tHours < 0 ? 0 : nHours - tHours;
                  if (nHours == tHours){
                    for (let i = tMinutes; i <= 59; i++) {
                      if (i < 10) {
                        data.division.push({ id: i, name: "0" + i + "分" });
                      } else {
                        data.division.push({ id: i, name: i + "分" });
                      }
                    }
                    data.index[4] = nMinutes - tMinutes < 0 ? 0 : nMinutes - tMinutes;
                  } else {
                    for (let i = 0; i <= 59; i++) {
                      if (i < 10) {
                        data.division.push({ id: i, name: "0" + i + "分" });
                      } else {
                        data.division.push({ id: i, name: i + "分" });
                      }
                    }
                    data.index[4] = nMinutes;
                  }
                } else {
                  for (let i = 0; i <= 23; i++) {
                    if (i < 10) {
                      data.time.push({ id: i, name: "0" + i + "时" });
                    } else {
                      data.time.push({ id: i, name: i + "时" });
                    }
                  }
                  
                  data.index[3] = nHours;
                  // console.log(time);
                  for (let i = 0; i <= 59; i++) {
                    if (i < 10) {
                      data.division.push({ id: i, name: "0" + i + "分" });
                    } else {
                      data.division.push({ id: i, name: i + "分" });
                    }
                  }
                  data.index[4] = nMinutes;
                }
              } else {
                let dayNum = this._getNumOfDays(nYear, nMonth);
                for (let i = 1; i <= dayNum; i++) {
                  data.day.push({ id: i, name: i + "日" });
                }
                data.index[2] = nDay - 1;
                for (let i = 0; i <= 23; i++) {
                  if (i < 10) {
                    data.time.push({ id: i, name: "0" + i + "时" });
                  } else {
                    data.time.push({ id: i, name: i + "时" });
                  }
                }
                
                data.index[3] = nHours;
                // console.log(time);
                for (let i = 0; i <= 59; i++) {
                  if (i < 10) {
                    data.division.push({ id: i, name: "0" + i + "分" });
                  } else {
                    data.division.push({ id: i, name: i + "分" });
                  }
                }
                data.index[4] = nMinutes;
              }
            }        
          } else {
            if (nYear == pYear) {
              for (let i = 1; i <= pMonth; i++) {
                data.month.push({ id: i, name: i + "月" });
              }
              data.index[1] = nMonth - 1;
              if (nMonth == pMonth){
                for (let i = 1; i <= pDay; i++) {
                  data.day.push({ id: i, name: i + "日" });
                }
                data.index[2] = nDay - 1;
                if (nDay == pDay){
                  for (let i = 0; i <= pHours; i++) {
                    if (i < 10) {
                      data.time.push({ id: i, name: "0" + i + "时" });
                    } else {
                      data.time.push({ id: i, name: i + "时" });
                    }
                  }
                  data.index[3] = nHours;
                  if (nHours == pHours){
                    for (let i = 0; i <= pMinutes; i++) {
                      if (i < 10) {
                        data.division.push({ id: i, name: "0" + i + "分" });
                      } else {
                        data.division.push({ id: i, name: i + "分" });
                      }
                    }
                    data.index[4] = nMinutes;
                  } else {
                    for (let i = 0; i <= 59; i++) {
                      if (i < 10) {
                        data.division.push({ id: i, name: "0" + i + "分" });
                      } else {
                        data.division.push({ id: i, name: i + "分" });
                      }
                    }
                    data.index[4] = nMinutes;
                  }
                } else {
                  for (let i = 0; i <= 23; i++) {
                    if (i < 10) {
                      data.time.push({ id: i, name: "0" + i + "时" });
                    } else {
                      data.time.push({ id: i, name: i + "时" });
                    }
                  }
                
                  data.index[3] = nHours;
                  // console.log(time);
                  for (let i = 0; i <= 59; i++) {
                    if (i < 10) {
                      data.division.push({ id: i, name: "0" + i + "分" });
                    } else {
                      data.division.push({ id: i, name: i + "分" });
                    }
                  }
                  data.index[4] = nMinutes;
                }
              } else {
                let dayNum = this._getNumOfDays(nYear, nMonth);
                for (let i = 1; i <= dayNum; i++) {
                  data.day.push({ id: i, name: i + "日" });
                }
                data.index[2] = nDay - 1;
                for (let i = 0; i <= 23; i++) {
                  if (i < 10) {
                    data.time.push({ id: i, name: "0" + i + "时" });
                  } else {
                    data.time.push({ id: i, name: i + "时" });
                  }
                }
              
                data.index[3] = nHours;
                // console.log(time);
                for (let i = 0; i <= 59; i++) {
                  if (i < 10) {
                    data.division.push({ id: i, name: "0" + i + "分" });
                  } else {
                    data.division.push({ id: i, name: i + "分" });
                  }
                }
                data.index[4] = nMinutes;
              }
            } else {
              for (let i = 1; i <= 12; i++) {
                data.month.push({ id: i, name: i + "月" });
              }
              data.index[1] = nMonth - 1;
              let dayNum = this._getNumOfDays(nYear, nMonth);
              for (let i = 1; i <= dayNum; i++) {
                data.day.push({ id: i, name: i + "日" });
              }
              data.index[2] = nDay - 1;
              for (let i = 0; i <= 23; i++) {
                if (i < 10) {
                  data.time.push({ id: i, name: "0" + i + "时" });
                } else {
                  data.time.push({ id: i, name: i + "时" });
                }
              }
              
              data.index[3] = nHours;
              // console.log(time);
              for (let i = 0; i <= 59; i++) {
                if (i < 10) {
                  data.division.push({ id: i, name: "0" + i + "分" });
                } else {
                  data.division.push({ id: i, name: i + "分" });
                }
              }
              data.index[4] = nMinutes;
            }
          }
          return data
        },
        /**
    	 * 
    	 * 获取本月天数
    	 * @param {number} year 
    	 * @param {number} month 
    	 * @param {number} [day=0] 0为本月0最后一天的
    	 * @returns number 1-31
    	 */
        _getNumOfDays(year, month, day = 0) {
          return new Date(year, month, day).getDate()
        },
        pickerChange: function (e) {
          // console.log('picker发送选择改变,携带值为', e.detail.value)
          let indexArr = e.detail.value;
          const year = this.data.pickerArray[0][indexArr[0]].id;
          const month = this.data.pickerArray[1][indexArr[1]].id;
          const day = this.data.pickerArray[2][indexArr[2]].id;
          const time = this.data.pickerArray[3][indexArr[3]].id;
          const division = this.data.pickerArray[4][indexArr[4]].id;
          let date = {
            date: new Date(year + '/' + month + '/' + day + ' ' + time + ':' + division),
            year: year + '',
            month: month < 10 ? '0' + month : month + '',
            day: day < 10 ? '0' + day : day + '',
            time: time < 10 ? '0' + time : time + '',
            division: division < 10 ? '0' + division : division + ''
          }
          date.dateString = date.year + '-' + date.month + '-' + date.day + ' ' + date.time + ':' + date.division;
          // console.log(date);
          this.setData({
            chooseIndex: e.detail.value,
            chooseArray: this.data.pickerArray,
            placeholder: date.dateString
          })
          this.triggerEvent('onPickerChange', date);
        },
        pickerColumnChange: function (e) {
          // console.log('修改的列为', e.detail.column, ',值为', e.detail.value);
          let data = {
            pickerArray: this.data.pickerArray,
            pickerIndex: this.data.pickerIndex
          };
          //首先获取 修改后的日期 然后重新赋值列表数据
          data.pickerIndex[e.detail.column] = e.detail.value;
          let cYear = data.pickerArray[0][data.pickerIndex[0]].id;
          let cMonth = data.pickerArray[1][data.pickerIndex[1]].id;
          let cDay = data.pickerArray[2][data.pickerIndex[2]].id;
          let cTime = data.pickerArray[3][data.pickerIndex[3]].id;
          let cDivision = data.pickerArray[4][data.pickerIndex[4]].id;
          //需要先判断修改后的日期是否是正确的天数 不正确会导致日期错乱等未知情况
          let daysn = this._getNumOfDays(cYear, cMonth);
          //不正确 重新赋值
          if (cDay > daysn){
            cDay = daysn;
          }
          
          // console.log(cYear + '-' + cMonth + '-' + cDay + ' ' + cTime + ':' + cDivision);
          let newDate = this._getDefaultDate(cYear + '/' + cMonth + '/' + cDay + ' ' + cTime + ':' + cDivision);
          //判断修改后的日期是否在限制范围内 不在则重新赋值
          if (newDate > this.data.enDate) {
            newDate = this.data.enDate;
          }
          if (newDate < this.data.stDate){
            newDate = this.data.stDate;
          }
          let tpData = this._getModify(newDate, this.data.stDate, this.data.enDate);
          data.pickerArray[0] = tpData.year;
          data.pickerArray[1] = tpData.month;
          data.pickerArray[2] = tpData.day;
          data.pickerArray[3] = tpData.time;
          data.pickerArray[4] = tpData.division;
          data.pickerIndex = tpData.index;
          
          for (let i = 0; i <=4; i++) {
            if (data.pickerArray[i].length - 1 < data.pickerIndex[i]) {
              data.pickerIndex[i] = data.pickerArray[i].length - 1;
            }
          }
          this.setData(data);
        },
        pickerCancel: function (e) {
          // console.log("取消");
          this.setData({
            pickerIndex: this.data.chooseIndex,
            pickerArray: this.data.chooseArray
          })
        },
      },
      // 以下是旧式的定义方式,可以保持对 <2.2.3 版本基础库的兼容
      attached() {
        // 在组件实例进入页面节点树时执行
        // 在组件实例进入页面节点树时执行
        // this._onInit();
      },
      ready() {
        // console.log('进入ready外层节点=', this.data.date);
        this._onInit();
      },
      // 以下为新方法 >=2.2.3
      lifetimes: {
        attached() {
          // 在组件实例进入页面节点树时执行
          // this._onInit();
        },
        detached() {
          // 在组件实例被从页面节点树移除时执行
        },
        ready() {
          // console.log('进入ready节点=', this.data.date);
          this._onInit();
        }
      }
    })
    

    其中年份默认开始时间为1901-01-01 00:00 结束时间 2099-12-31 23:59 如果需要修改可以添加startDate开始年份 endDate结束年份 目前可以限制所有条件

    pickerYMDHM.wxml文件

    <!--components/pickerYMDHM/pickerYMDHM.wxml-->
    <view>
      <picker disabled="{{disabled}}" mode="multiSelector" bindchange="pickerChange" bindcolumnchange="pickerColumnChange" bindcancel ="pickerCancel" value="{{pickerIndex}}" range="{{pickerArray}}" range-key="{{'name'}}">
        <view style='font-size:.7rem;background-color: #F8F8FF;line-height: 40px;padding:0px 10px;width:150px;text-align:center'>
          {{placeholder}}
        </view>
      </picker>
    </view>

    这个只是随便设置了个样式,如果需要修改,可按需求更改。

    另外由于封装成了组件 所以json文件里需要设置component为true

    pickerYMDHM.json文件

    {
    
    "component": true,
    
    "usingComponents": {}
    
    }

    使用方法,在需要使用页面的json文件里添加组件 "pickerYMDHM": "/components/pickerYMDHM/pickerYMDHM" 类似如下

    {
      "usingComponents": {
        "pickerYMDHM": "/components/pickerYMDHM/pickerYMDHM"
      },
      "navigationBarTitleText": "详情"
    }

    对应wxml使用自定义标签pickerYMDHM

    <!--index.wxml-->
    <view class="container">
      <pickerYMDHM placeholder = "{{placeholder}}" date = "{{date}}" disabled = "{{disabled}}" bind:onPickerChange="onPickerChange" startDate="{{startDate}}" endDate="{{endDate}}">
      </pickerYMDHM>
    </view>
    
    //index.js
    //获取应用实例
    const app = getApp()
    
    Page({
      data: {
        date:'2019-01-01 13:37',
        disabled:false,//设置是否能点击 false可以 true不能点击
        startDate: '2019-01-01 12:37',
        endDate: '2019-03-12 12:38',
        placeholder:'请选择时间'
      },
      onLoad: function () {
    
      },
      /**
     * 日历控件绑定函数 
     * 点击日期返回
     */
      onPickerChange: function (e) {
        console.log(e.detail);
        this.setData({
          date: e.detail.dateString
        })
      },
    })
    

    其中bind:onPickerChange="onPickerChange"为日期控件点击确定后的回调函数 在对应js里添加

      /**
     * 日历控件绑定函数 
     * 点击日期返回
     */
      onPickerChange: function (e) {
        console.log(e.detail);
        this.setData({
          date: e.detail.dateString
        })
      },

    返回的数据

    下载链接:https://github.com/MuYuAuspicious/pickerYMDHM

    展开全文
  • Android 年月日时分秒时间选择器

    万次阅读 2017-07-10 09:04:53
    项目开发中 如果你需要一个年月日时分秒类型时间选择器 用DataPicker和TimePicker联动去实现得话 会非常得不方便 会碰到布局不协调得问题 灵活性很低 可实现的布局也就两种 所以为了更好的效果 个人建议你使用 ...

    项目开发中 如果你需要一个年月日时分秒类型时间选择器 用DataPicker和TimePicker联动去实现得话 会非常得不方便 会碰到布局不协调得问题 灵活性很低 可实现的布局也就两种 所以为了更好的效果 个人建议你使用 numberPicker 数字选择器 去实现 本人思路是 numberpicker结合PopupWindow 去实现 简单实现代码奉上 欢迎各位大神指正

    第一步 popupwindow 的布局效果(底部有图)及xml文件

    可根据自己得需要布局 底部效果图 是本案样例

    第二步 自定义PopupWindow java 代码

    public SPopupWindow(Context context, View.OnClickListener clickListener){
    // 填充试图 实例化空间
    this.view = LayoutInflater.from(context).inflate(R.layout.popupwindow,null);
    day = (NumberPicker) view.findViewById(R.id.day);
    hour = (NumberPicker) view.findViewById(R.id.hour);
    minte = (NumberPicker) view.findViewById(R.id.minte);
    time = (NumberPicker) view.findViewById(R.id.time);
    quxiao = (Button) view.findViewById(R.id.quxiao);
    year = (NumberPicker) view.findViewById(R.id.year);
    month = (NumberPicker) view.findViewById(R.id.month);

     // 按钮点击事件
        this.setOutsideTouchable(true);
        quxiao.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              dismiss();
            }
        });
        queren = (Button) view.findViewById(R.id.queren);
       queren.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
                int yearValue = year.getValue();
                int monthValue = month.getValue();
                int dayValue = day.getValue();
                int timeValue = time.getValue();
                int hourValue = hour.getValue();
                int minteValue = minte.getValue();
                String time = ""+yearValue+monthValue+dayValue+timeValue+hourValue+minteValue;
                if (onClickButton!=null){
                    onClickButton.OnClickButton(time);
                }
    
                dismiss();
            }
        });
    
        this.view.setOnTouchListener(new View.OnTouchListener() {
    
            public boolean onTouch(View v, MotionEvent event) {
    
                int height = view.findViewById(R.id.pop_layout).getTop();
    
                int y = (int) event.getY();
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    if (y < height) {
                        dismiss();
                    }
                }
                return true;
            }
        });
    
           /* 设置弹出窗口特征 */
        // 设置视图
        this.setContentView(this.view);
        // 设置弹出窗体的宽和高
        this.setHeight(RelativeLayout.LayoutParams.WRAP_CONTENT);
        this.setWidth(RelativeLayout.LayoutParams.MATCH_PARENT);
    
        // 设置弹出窗体可点击
        this.setFocusable(true);
    
        // 实例化一个ColorDrawable颜色为半透明
        ColorDrawable dw = new ColorDrawable(0xb0000000);
        // 设置弹出窗体的背景
        this.setBackgroundDrawable(dw);
    
    // 获取当前时间 取出年月日时分 作为当前得时间基点
        long t = System.currentTimeMillis();
        SimpleDateFormat df1 = new SimpleDateFormat("yyyy");
        SimpleDateFormat df2 = new SimpleDateFormat("MM");
        SimpleDateFormat df3 = new SimpleDateFormat("dd");
        SimpleDateFormat df4 = new SimpleDateFormat("HH");
        SimpleDateFormat df5 = new SimpleDateFormat("mm");
        String y = df1.format(t);
        final String m = df2.format(t);
        final String d = df3.format(t);
        final String h = df4.format(t);
        final String mi = df5.format(t);
        Log.d("tag", "SPopupWindow: BBB---"+y+m+d+h+mi);
        final String[] noons = {"上午","下午"};
        day.setMaxValue(31);
        day.setMinValue(1);
        time.setDisplayedValues(noons);
        day.setValue(Integer.valueOf(d));
        time.setMaxValue(noons.length-1);
        time.setMinValue(0);
        time.setValue(0);
        hour.setMaxValue(12);
        hour.setMinValue(1);
        hour.setValue(Integer.valueOf(h));
        minte.setMaxValue(60);
        minte.setMinValue(1);
        minte.setValue(Integer.valueOf(mi));
        year.setMinValue(Integer.valueOf(y));
        year.setMaxValue(Integer.valueOf(y)+20);
        year.setValue(Integer.valueOf(y));
        month.setMinValue(1);
        month.setMaxValue(12);
        month.setValue(Integer.valueOf(m));
    

    // numberpicker 内容的变化监听 时间得逻辑处理可在此处
    day.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
    @Override
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
    Log.d(“tt”, “onValueChange: day–>”+newVal);
    day.setValue(newVal);
    if (oldVal!=newVal){
    hour.setValue(1);
    }else {
    hour.setValue(Integer.valueOf(h));
    }
    }
    });
    time.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
    @Override
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
    Log.d(“tt”, “onValueChange: tiem–>”+noons[newVal].toString());
    time.setValue(newVal);

            }
        });
        hour.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
            @Override
            public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
                Log.d("tt", "onValueChange: hour-->"+ newVal);
                hour.setValue(newVal);
                if (oldVal!=newVal){
                    minte.setValue(1);
                }else {
                    minte.setValue(Integer.valueOf(mi));
                }
            }
        });
        minte.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
            @Override
            public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
    
            }
        });
        month.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
            @Override
            public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
               month.setValue(newVal);
                if (oldVal!=newVal){
                    day.setValue(1);
                }else {
                    day.setValue(Integer.valueOf(d));
                }
            }
    
        });
        year.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
            @Override
            public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
                year.setValue(newVal);
                if (oldVal!= newVal){
                    month.setValue(1);
                }else {
                    month.setValue(Integer.valueOf(m));
                }
            }
        });
    
    }
    

    // 定义按钮得点击接口
    public interface OnClickButton{
    void OnClickButton(String s);
    }
    // 设置按钮点击方法
    public void setOnCilckButton(OnClickButton onClickButton){
    this.onClickButton= onClickButton;

    }
    

    第三步 在需要activity 中实例化popupwindow 并调用

        takePhotoPopWin = new SPopupWindow(this,this);
    

    // 设置Popupwindow显示位置(从底部弹出)
    takePhotoPopWin.showAtLocation(findViewById(R.id.main_view), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);
    params = getWindow().getAttributes();
    //当弹出Popupwindow时,背景变半透明
    params.alpha=0.7f;
    getWindow().setAttributes(params);
    //设置Popupwindow关闭监听,当Popupwindow关闭,背景恢复1f
    takePhotoPopWin.setOnDismissListener(new PopupWindow.OnDismissListener() {
    @Override
    public void onDismiss() {
    params = getWindow().getAttributes();
    params.alpha=1f;
    getWindow().setAttributes(params);
    }
    });
    takePhotoPopWin.setOnCilckButton(new SPopupWindow.OnClickButton() {
    @Override
    public void OnClickButton(String s) {
    Log.d(“tt”, “OnClickButton:———– “+s);
    text.setText(s);
    }

    效果图

    这里写图片描述
    });
    xml布局效果
    此时 属于你自己的时间选择器 就完成了 超级简单
    这里写图片描述
    喜欢得可以点个赞
    下载链接 http://download.csdn.net/download/naide_s/9992028

    这里写图片描述

    展开全文
  • JQ年月时间控件

    2019-01-16 09:25:36
    JQ年月时间控件,
  • 微信小程序开发过程中,关于时间的处理常常会有不同的格式要求,那么封装一个满足不同格式的通用时间工具类显得尤...年月日时分秒格式 YYYY-MM-DD HH:MI:SS 年月日格式 YYYY-MM-DD 时分格式 HH:MI const for...
  • Datetime简单全面好用的日期时间插件插件下载地址1.通过id使用HTML代码日期时间选择器js代码$('#datetimepicker').datetimepicker({dayOfWeekStart : 1,lang:'en',disabledDates:['1996/01/08','1996/01/09','1996/...
  • jquery精确到年月日秒的动态倒计时插件downCount.js下载地址
  • 使用js动态显示当前时间(包括年月日星期以及时分秒),本人已经调试成功了,大家快点来下载吧!就一分,真心值的
  • UTC:世界标准时间,在世界标准时间上加上8小时,即东八区时间,也就是北京时间。 二、 2020-09-29T18:02:02.000Z转换为 2020-09-30 02:02:02 步骤: ①.引入 dayjs (一个轻量的处理时间和日期的javascr
  • 这是一款基于jQuery的日历时间插件,点击输入框后日历将会弹出,并可以开启时间选择模式选择更具体的时间,也是一款非常实用的jQuery日历插件
  • 这个要求用的不多,但是也有写项目上面不想看手机时间,要求你直接把时间日期给动态显示在界面上 这里就记录一个自定义控件吧 public class UpdateTimeTextView extends AppCompatTextView { private String TAG = ...
  • 项目中可能需要用户设置他的个人信息其中就包括出生年月日的选择,首先定义一个TextView,点击它显示三级联动的选择器,然后点击确定按钮执行特定操作。onClick的点击事件: case R.id.tv_my_birth: selectDate();...
  • [b]注:例子中出现的jquery-ui-1.7.3是jquery的插件,包含了日期控件的国际化和一些动画特效[/b],下载地址:[url]http://jqueryui.com/[/url] [code="javascript"] $('#...
  • 年月日时分秒选择器

    热门讨论 2014-11-30 03:14:14
    android年月日时分秒选择器,根据andbase框架写的一个时间选择器,简单实用有价值,走过路过不要错过!只要你需要,这个就值得!欢迎大家下载!只要几秒钟。它就属于你了!
  • // 获取时间:时分秒 const hour = date.getHours() < 10 ? "0" + date.getHours() : date.getHours() const minute = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes() const ...
  • 中文语音播报音频文件[阿拉伯数字0-9][年月日][时间]等
  • js引入只带年月时间选择插件

    千次阅读 2019-04-29 12:49:15
    js引入只带年月时间选择插件   有时候需要引入时间选择插件,只需要年月,可以使用bootstrap的,效果如下: 下载代码地址如下:百度网盘地址 提取码:z4k6 内容如下: ...
  • 2008年9月6 星期六 农历戊子年 八月初七
  • 页面显示格式:年月日星期几 var day=""; var month=""; var ampm=""; var ampmhour=""; var myweekday=""; var year=""; mydate=new Date(); myweekday=mydate.getDay(); ...
  • 时间控件-时分秒/分秒/年月日

    万次阅读 2017-08-17 11:17:45
    做项目的时候,很多时候我们会遇到使用时间控件的部分,下面介绍一个时间控件,---calendar.js,,这个控件是晚上照的,根据需要,把它修改的更加完善了。 首先我们需要引入这些文件: 这个日期控件的样式就是这样...
  • Extjs 实现年月日时分秒的时间选择器,实现方式也是继承现有类,进一步封装一下自己的功能。  js代码如下: /*-----------'Y-m-d H:m:s' format section--------------*/ Ext.ns('Ext.ux.form'); Ext.ux.form...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,406
精华内容 4,162
关键字:

下载年月日时间