用UNIAPP实现一个时间选择器,包括年(前5年后5年)、月、日、时、分 间隔10分钟 能用的代码
时间: 2024-05-15 22:12:23 浏览: 76
以下是一个使用 UNIAPP 实现时间选择器的代码示例,包括年、月、日、时、分:
```vue
<template>
<div class="time-picker">
<div class="item">
<label>年份:</label>
<select v-model="year">
<option v-for="y in years" :key="y" :value="y">{{ y }} 年</option>
</select>
</div>
<div class="item">
<label>月份:</label>
<select v-model="month">
<option v-for="(m, index) in months" :key="m" :value="index+1">{{ m }} 月</option>
</select>
</div>
<div class="item">
<label>日期:</label>
<select v-model="day">
<option v-for="d in days" :key="d" :value="d">{{ d }} 日</option>
</select>
</div>
<div class="item">
<label>小时:</label>
<select v-model="hour">
<option v-for="h in hours" :key="h" :value="h">{{ h }} 时</option>
</select>
</div>
<div class="item">
<label>分钟:</label>
<select v-model="minute">
<option v-for="m in minutes" :key="m" :value="m">{{ m }} 分</option>
</select>
</div>
</div>
</template>
<script>
export default {
data() {
const currentYear = new Date().getFullYear();
const years = Array.from({ length: 11 }, (_, i) => currentYear - 5 + i);
const months = Array.from({ length: 12 }, (_, i) => i + 1);
const days = Array.from({ length: 31 }, (_, i) => i + 1);
const hours = Array.from({ length: 24 }, (_, i) => i);
const minutes = Array.from({ length: 60 / 10 }, (_, i) => i * 10);
return {
years,
months,
days,
hours,
minutes,
year: currentYear,
month: 1,
day: 1,
hour: 0,
minute: 0,
};
},
};
</script>
<style scoped>
.time-picker {
display: flex;
flex-wrap: wrap;
align-items: center;
}
.item {
display: flex;
align-items: center;
margin-right: 16px;
}
label {
font-weight: bold;
margin-right: 4px;
}
select {
padding: 4px;
}
</style>
```
这个示例中,我们使用了 `data` 函数来初始化数据,包括年、月、日、时、分的可选值。我们使用了 ES6 中的 `Array.from` 方法来生成数组,方便设置范围。
在模板中,我们使用 `v-model` 指令来绑定每个下拉框的值,并使用 `v-for` 指令来生成选项。我们还使用了样式来美化时间选择器的外观。
需要注意的是,上述示例没有处理闰年和月份天数的问题,如果需要使用时需要自行处理。此外,使用这种方式生成的时间选择器是静态的,不能响应用户的操作,如果需要实现动态响应的时间选择器,可以使用 `watch` 或计算属性来实现。
阅读全文