>  기사  >  위챗 애플릿  >  WeChat 애플릿 날짜 및 시간 선택기를 사용하는 방법

WeChat 애플릿 날짜 및 시간 선택기를 사용하는 방법

小云云
小云云원래의
2018-02-02 10:04:345058검색

이 글에서는 WeChat 애플릿 날짜 및 시간 선택기를 사용하는 방법을 주로 소개합니다. 사용자 정의는 분, 초 또는 기간별로 정확합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

Rendering

WeChat 애플릿 날짜 및 시간 선택기를 사용하는 방법

구현 원칙

WeChat 애플릿 선택기 구성 요소의 다중 열 선택기를 사용하여 구현합니다!

WXML


<view class="tui-picker-content">
 <view class="tui-picker-name">时间选择器(选择时分)</view>
 <picker mode="time" value="{{time}}" start="09:00" end="17:30" bindchange="changeTime">
 <view class="tui-picker-detail">
  午饭时间: {{time}} 
 </view>
 </picker>
</view>

<view class="tui-picker-content">
 <view class="tui-picker-name">日期选择器(选择年月日)</view>
 <picker mode="date" value="{{date}}" start="2017-10-01" end="2017-10-08" bindchange="changeDate">
 <view class="tui-picker-detail">
  国庆出游: {{date}}
 </view>
 </picker>
</view>

<view class="tui-picker-content">
 <view class="tui-picker-name">日期时间选择器(精确到秒)</view>
 <picker mode="multiSelector" value="{{dateTime}}" bindchange="changeDateTime" bindcolumnchange="changeDateTimeColumn" range="{{dateTimeArray}}">
 <view class="tui-picker-detail">
  选择日期时间: {{dateTimeArray[0][dateTime[0]]}}-{{dateTimeArray[1][dateTime[1]]}}-{{dateTimeArray[2][dateTime[2]]}} {{dateTimeArray[3][dateTime[3]]}}:{{dateTimeArray[4][dateTime[4]]}}:{{dateTimeArray[5][dateTime[5]]}}
 </view>
 </picker>
</view>
<view class="tui-picker-content">
 <view class="tui-picker-name">日期时间选择器(精确到分)</view>
 <picker mode="multiSelector" value="{{dateTime1}}" bindchange="changeDateTime1" bindcolumnchange="changeDateTimeColumn1" range="{{dateTimeArray1}}">
 <view class="tui-picker-detail">
  选择日期时间: {{dateTimeArray1[0][dateTime1[0]]}}-{{dateTimeArray1[1][dateTime1[1]]}}-{{dateTimeArray1[2][dateTime1[2]]}} {{dateTimeArray1[3][dateTime1[3]]}}:{{dateTimeArray1[4][dateTime1[4]]}}
 </view>
 </picker>
</view>

WXSS


@import "../picker/picker.wxss";

은 3단계 연결 선택기 스타일을 사용하므로 직접 가져옵니다!

JS


var dateTimePicker = require(&#39;../../utils/dateTimePicker.js&#39;);

Page({
 data: {
 date: &#39;2018-10-01&#39;,
 time: &#39;12:00&#39;,
 dateTimeArray: null,
 dateTime: null,
 dateTimeArray1: null,
 dateTime1: null,
 startYear: 2000,
 endYear: 2050
 },
 onLoad(){
 // 获取完整的年月日 时分秒,以及默认显示的数组
 var obj = dateTimePicker.dateTimePicker(this.data.startYear, this.data.endYear);
 var obj1 = dateTimePicker.dateTimePicker(this.data.startYear, this.data.endYear);
 // 精确到分的处理,将数组的秒去掉
 var lastArray = obj1.dateTimeArray.pop();
 var lastTime = obj1.dateTime.pop();

 this.setData({
  dateTime: obj.dateTime,
  dateTimeArray: obj.dateTimeArray,
  dateTimeArray1: obj1.dateTimeArray,
  dateTime1: obj1.dateTime
 });
 },
 changeDate(e){
 this.setData({ date:e.detail.value});
 },
 changeTime(e){
 this.setData({ time: e.detail.value });
 },
 changeDateTime(e){
 this.setData({ dateTime: e.detail.value });
 },
 changeDateTime1(e) {
 this.setData({ dateTime1: e.detail.value });
 },
 changeDateTimeColumn(e){
 var arr = this.data.dateTime, dateArr = this.data.dateTimeArray;

 arr[e.detail.column] = e.detail.value;
 dateArr[2] = dateTimePicker.getMonthDay(dateArr[0][arr[0]], dateArr[1][arr[1]]);

 this.setData({
  dateTimeArray: dateArr,
  dateTime: arr
 });
 },
 changeDateTimeColumn1(e) {
 var arr = this.data.dateTime1, dateArr = this.data.dateTimeArray1;

 arr[e.detail.column] = e.detail.value;
 dateArr[2] = dateTimePicker.getMonthDay(dateArr[0][arr[0]], dateArr[1][arr[1]]);

 this.setData({ 
  dateTimeArray1: dateArr,
  dateTime1: arr
 });
 }
})

외부 JS 소개, dateTimePicker.js


function withData(param){
 return param < 10 ? &#39;0&#39; + param : &#39;&#39; + param;
}
function getLoopArray(start,end){
 var start = start || 0;
 var end = end || 1;
 var array = [];
 for (var i = start; i <= end; i++) {
 array.push(withData(i));
 }
 return array;
}
function getMonthDay(year,month){
 var flag = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0), array = null;

 switch (month) {
 case &#39;01&#39;:
 case &#39;03&#39;:
 case &#39;05&#39;:
 case &#39;07&#39;:
 case &#39;08&#39;:
 case &#39;10&#39;:
 case &#39;12&#39;:
  array = getLoopArray(1, 31)
  break;
 case &#39;04&#39;:
 case &#39;06&#39;:
 case &#39;09&#39;:
 case &#39;11&#39;:
  array = getLoopArray(1, 30)
  break;
 case &#39;02&#39;:
  array = flag ? getLoopArray(1, 29) : getLoopArray(1, 28)
  break;
 default:
  array = &#39;月份格式不正确,请重新输入!&#39;
 }
 return array;
}
function getNewDateArry(){
 // 当前时间的处理
 var newDate = new Date();
 var year = withData(newDate.getFullYear()),
  mont = withData(newDate.getMonth() + 1),
  date = withData(newDate.getDate()),
  hour = withData(newDate.getHours()),
  minu = withData(newDate.getMinutes()),
  seco = withData(newDate.getSeconds());

 return [year, mont, date, hour, minu, seco];
}
function dateTimePicker(startYear,endYear,date) {
 // 返回默认显示的数组和联动数组的声明
 var dateTime = [], dateTimeArray = [[],[],[],[],[],[]];
 var start = startYear || 1978;
 var end = endYear || 2100;
 // 默认开始显示数据
 var defaultDate = date ? [...date.split(&#39; &#39;)[0].split(&#39;-&#39;), ...date.split(&#39; &#39;)[1].split(&#39;:&#39;)] : getNewDateArry();
 // 处理联动列表数据
 /*年月日 时分秒*/ 
 dateTimeArray[0] = getLoopArray(start,end);
 dateTimeArray[1] = getLoopArray(1, 12);
 dateTimeArray[2] = getMonthDay(defaultDate[0], defaultDate[1]);
 dateTimeArray[3] = getLoopArray(0, 23);
 dateTimeArray[4] = getLoopArray(0, 59);
 dateTimeArray[5] = getLoopArray(0, 59);

 dateTimeArray.forEach((current,index) => {
 dateTime.push(current.indexOf(defaultDate[index]));
 });

 return {
 dateTimeArray: dateTimeArray,
 dateTime: dateTime
 }
}
module.exports = {
 dateTimePicker: dateTimePicker,
 getMonthDay: getMonthDay
}

Summary

  • 초기화 목록과 기본적으로 초기화되는 배열을 dateTimePicker에 넣습니다. .js를 사용하여 page 너무 논리적이어서 지저분하고 여러 곳에서 사용할 수 있습니다.

  • 윤년인지 확인하려면 Miki 표현식에서 한 가지 조건이 충족되는 한 400으로 나눌 수 있는 값을 앞에 두어야 합니다. OR 연산은 true를 반환하고 후속 실행은 수행되지 않습니다. 표현식

  • 대소문자 병합 방법은 형식에 주의해야 합니다.

  • 링크 목록만 업데이트하고 두 번째 결과를 업데이트해야 합니다. 표시 열은 업데이트되지 않으며, dateTimeArray 값만changeDateTimeColumn 함수에서 업데이트됩니다.

관련 권장 사항:

jQuery 쓰기 날짜 선택기 인스턴스 튜토리얼

jQuery UI 날짜 선택기 Datepicker 세부 설명

WeChat 애플릿용 날짜 선택기를 개발하는 방법

위 내용은 WeChat 애플릿 날짜 및 시간 선택기를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.