You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
3.7 KiB
120 lines
3.7 KiB
4 years ago
|
<wxs module="dateUtil">
|
||
|
var isDate = function(date) {
|
||
|
return date && date.getMonth;
|
||
|
};
|
||
|
|
||
|
var isLeapYear = function(year) {
|
||
|
//传入为时间格式需要处理
|
||
|
if (isDate(year)) year = year.getFullYear()
|
||
|
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) return true;
|
||
|
return false;
|
||
|
};
|
||
|
|
||
|
var getDaysOfMonth = function(date) {
|
||
|
var month = date.getMonth(); //注意此处月份要加1,所以我们要减一
|
||
|
var year = date.getFullYear();
|
||
|
return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
|
||
|
}
|
||
|
|
||
|
var getBeginDayOfMouth = function(date) {
|
||
|
var month = date.getMonth();
|
||
|
var year = date.getFullYear();
|
||
|
var d = getDate(year, month, 1);
|
||
|
return d.getDay();
|
||
|
}
|
||
|
|
||
|
var getDisplayInfo = function(date) {
|
||
|
|
||
|
if (!isDate(date)) {
|
||
|
date = getDate(date)
|
||
|
}
|
||
|
var year = date.getFullYear();
|
||
|
|
||
|
var month = date.getMonth();
|
||
|
var d = getDate(year, month);
|
||
|
|
||
|
|
||
|
//这个月一共多少天
|
||
|
var days = getDaysOfMonth(d);
|
||
|
|
||
|
//这个月是星期几开始的
|
||
|
var beginWeek = getBeginDayOfMouth(d);
|
||
|
|
||
|
return {
|
||
|
year: year,
|
||
|
month: month,
|
||
|
days: days,
|
||
|
beginWeek: beginWeek
|
||
|
}
|
||
|
};
|
||
|
|
||
|
//分割月之间的展示
|
||
|
var monthClapFn = function(year, month) {
|
||
|
month = month + 1;
|
||
|
return year + '年' + (month) + '月';
|
||
|
};
|
||
|
|
||
|
|
||
|
//时间转化
|
||
|
var getChangedDate = function(date) {
|
||
|
var timer = date.split('-')
|
||
|
var changedYear = parseInt(timer[0])
|
||
|
var changedMonth = parseInt(timer[1])-1
|
||
|
var my_month = parseInt(timer[1])
|
||
|
return {
|
||
|
str_month: monthClapFn(changedYear, changedMonth)
|
||
|
date: getDate(changedYear, changedMonth),
|
||
|
year: changedYear,
|
||
|
month: changedMonth,
|
||
|
my_month: my_month
|
||
|
};
|
||
|
};
|
||
|
|
||
|
var isSelected = function(date, year, month, day) {
|
||
|
if (!isDate(date)) {
|
||
|
date = getDate(date);
|
||
|
}
|
||
|
|
||
|
if (date.getFullYear() == year && date.getMonth() == month && date.getDate() == day) return 'active active-back-one';
|
||
|
return '';
|
||
|
|
||
|
};
|
||
|
|
||
|
var formatNum = function(n) {
|
||
|
if (n < 10) return '0' + n;
|
||
|
return n;
|
||
|
};
|
||
|
|
||
|
module.exports = {
|
||
|
getDipalyInfo: getDisplayInfo,
|
||
|
getChangedDate: getChangedDate,
|
||
|
isSelected: isSelected
|
||
|
}
|
||
|
</wxs>
|
||
|
<view class="cm-calendar">
|
||
|
<view class="cm-calendar-hd">
|
||
|
<block wx:for="{{weekDayArr}}" wx:key="weekDayKey">
|
||
|
<view class="item">{{item}}</view>
|
||
|
</block>
|
||
|
</view>
|
||
|
<block>
|
||
|
<view class="cm-calendar-bd ">
|
||
|
<view class="cm-day-list">
|
||
|
<block wx:key="tt"
|
||
|
wx:for="{{dateUtil.getDipalyInfo(dateUtil.getChangedDate(displayTime).date).days + dateUtil.getDipalyInfo(dateUtil.getChangedDate(displayTime).date).beginWeek}}"
|
||
|
wx:for-index="index">
|
||
|
<view wx:if="{{index < dateUtil.getDipalyInfo(dateUtil.getChangedDate(displayTime).date).beginWeek }}"
|
||
|
class="item"></view>
|
||
|
<view bindtap="onDayTap" wx:else data-year="{{dateUtil.getChangedDate(displayTime).year}}"
|
||
|
data-month="{{dateUtil.getChangedDate(displayTime).my_month}}"
|
||
|
data-day="{{index + 1 - dateUtil.getDipalyInfo(dateUtil.getChangedDate(displayTime).date).beginWeek}}"
|
||
|
class="item {{dateUtil.isSelected(selectedDate, dateUtil.getChangedDate(displayTime).year, dateUtil.getChangedDate(displayTime).month, index + 1 - dateUtil.getDipalyInfo(dateUtil.getChangedDate(displayTime).date).beginWeek)}}">
|
||
|
<view class="cm-field-title">
|
||
|
{{index + 1 - dateUtil.getDipalyInfo(dateUtil.getChangedDate(displayTime).date).beginWeek }}
|
||
|
</view>
|
||
|
</view>
|
||
|
</block>
|
||
|
</view>
|
||
|
</view>
|
||
|
</block>
|
||
|
</view>
|