先看成品
wxml代码
<
scroll-view
class
=
"scroll-view"
scroll-left
=
"{{scrollLeftIndex*itemWidth}}"
scroll-x scroll-with-animation>
<
view
class
=
‘item‘
style
=
‘width:{{itemWidth}}px‘
wx:for
=
"{{dateList}}"
data-index
=
‘{{index}}‘
bindtap
=
‘clickDate‘
>
<
view
class
=
‘text-view‘
>
<
view
class
=
‘day {{index==clickIndex?"day-active":""}}‘
>{{item.day}}</
view
>
<
text
class
=
‘month‘
>{{item.month}}月</
text
>
<
view
wx:if
=
"{{item.month == sysmonth && item.day == nowDate}}"
>
<
text
class
=
‘week‘
>今日</
text
>
</
view
>
<
view
wx:else>
<
text
class
=
‘week‘
>{{item.week}}</
text
>
</
view
>
</
view
>
</
view
>
</
scroll-view
>
js文件中的代码
Page({
/**
* 页面的初始数据
*/
data: {
dateList:[],
//存放日期的数组
nowDate:
‘‘
,
//系统当前日期
},
// 格式化日期,时间
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(
this
.formatNumber).join(
‘/‘
) +
‘ ‘
+ [hour, minute, second].map(
this
.formatNumber).join(
‘:‘
)
},
// 格式化数字
formatNumber(n) {
n = n.toString()
return
n[1] ? n :
‘0‘
+ n
},
// 获取日期详情
getDateInfo(ts) {
const date =
new
Date(ts);
const weekArr =
new
Array(
"日"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
);
const week = date.getDay();
let dateString =
this
.formatTime(date);
let shortDateString = dateString.replace(/\
//g, ‘-‘).substring(5, 10).replace(/-/g, ‘月‘) + "日";
if
(date.getDate() < 10) {
shortDateString = shortDateString.replace(/0/g,
‘‘
);
}
return
{
shortDateString,
dateString,
month: date.getMonth() + 1,
day: date.getDate(),
week: weekArr[week]
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad:
function
(options) {
var
that =
this
;
var
myDate =
new
Date();
//获取系统当前时间
var
sysmonth = myDate.getMonth() + 1
var
nowDate = myDate.getDate();
//当前是本月几日
var
today = myDate.toLocaleDateString();
//今日年月日
that.setData({
nowDate: nowDate,
sysmonth: sysmonth
}),
console.log(
‘系统日期:‘
,myDate);
console.log(
‘系统日期(年/月/日):‘
,today);
console.log(
‘系统日期(月):‘
, sysmonth);
console.log(
‘系统日期(日):‘
, nowDate);
// 获取屏幕宽度,设置每个日期宽度
wx.getSystemInfo({
success: (res) => {
console.log(res);
this
.setData({
windowWidth: res.windowWidth,
itemWidth: parseInt(res.windowWidth / 7)
});
},
})
this
.initData();
},
// 初始化日期
initData() {
const nowDateTime = +
new
Date();
let dateList = [];
for
(let i = -30; i < 30; i++) {
let obj =
this
.getDateInfo(nowDateTime + i * 24 * 60 * 60 * 1000);
obj.isChoose = i == 0;
dateList.push(obj);
}
this
.setData({
dateList,
clickIndex: 30,
scrollLeftIndex: 30
});
},
// 点击日期方法
clickDate(e) {
var
that =
this
;
console.log(
‘点击日期携带的下标:‘
, e.currentTarget.dataset.index);
//当前的点击的日期
var
index = e.currentTarget.dataset.index;
that.setData({
clickIndex: index
});
// console.log(that.data.scrollLeftIndex);
console.log(
‘当前点击日期:‘
,that.data.dateList[index].shortDateString);
//当前点击的日期
// const {
// index
// } = e.currentTarget.dataset;
// this.setData({
// clickIndex: index
// });
// console.log(this.data.dateList[index]);
},
})
最后是我们的样式:
.scroll-view {
height
:
200
rpx;
background-color
:
#313751
;
width
:
100%
;
white-space
:
nowrap
;
}
.item {
height
:
200
rpx;
display
: inline-
block
;
}
.text-view {
display
: flex;
align-items:
center
;
justify-
content
:
center
;
flex-
direction
: column;
width
:
100%
;
height
:
100%
;
color
:
#fff
;
}
.month {
font-size
:
30
rpx;
margin-top
:
10
rpx;
}
.week {
font-size
:
32
rpx;
margin-top
:
10
rpx;
}
.day {
font-size
:
32
rpx;
width
:
60
rpx;
height
:
60
rpx;
border-radius:
10
rpx;
text-align
:
center
;
line-height
:
60
rpx;
margin-top
:
20
rpx;
}
/* 日期选中的样式 */
.day-active {
background-color
:
#FFB400
;
color
:
#fff
;
}