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
<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> |