需要实现的:
代码:
<template>
<view>
<picker mode="multiSelector" :value="multiIndex" :range="multiRange" @change="onMultiChange">
<view class="picker">
当前选择:{{ formattedDateTime }}
</view>
</picker>
</view>
</template>
<script>
export default {
data() {
const now = new Date();
return {
multiIndex: [
now.getFullYear() - 1900, // 年份
now.getMonth(), // 月份 (0-11)
now.getDate() - 1, // 日期 (1-31,减1以用于索引)
now.getHours(), // 小时 (0-23)
now.getMinutes(), // 分钟 (0-59)
now.getSeconds() // 秒 (0-59)
],
multiRange: this.getMultiRange()
};
},
computed: {
formattedDateTime() {
const year = this.multiRange[0][this.multiIndex[0]];
const month = String(this.multiRange[1][this.multiIndex[1]]).padStart(2, '0');
const day = String(this.multiRange[2][this.multiIndex[2]]).padStart(2, '0');
const hour = String(this.multiRange[3][this.multiIndex[3]]).padStart(2, '0');
const minute = String(this.multiRange[4][this.multiIndex[4]]).padStart(2, '0');
const second = String(this.multiRange[5][this.multiIndex[5]]).padStart(2, '0');
return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
}
},
methods: {
getMultiRange() {
let yearRange = [];
let monthRange = [];
let dayRange = [];
let hourRange = [];
let minuteRange = [];
let secondRange = [];
// 生成年月日时分秒的数组
for (let i = 1900; i <= 2100; i++) yearRange.push(i);
for (let i = 1; i <= 12; i++) monthRange.push(i);
for (let i = 1; i <= 31; i++) dayRange.push(i);
for (let i = 0; i <= 23; i++) hourRange.push(i);
for (let i = 0; i <= 59; i++) minuteRange.push(i);
for (let i = 0; i <= 59; i++) secondRange.push(i);
return [yearRange, monthRange, dayRange, hourRange, minuteRange, secondRange];
},
onMultiChange(e) {
this.multiIndex = e.detail.value;
}
}
};
</script>
<style>
.picker {
padding: 10px;
background-color: #fff;
text-align: center;
}
</style>