1. 因为elementui 自带的周选择器,只能选择一个时间点, 所以我input 来装这个时间区间

结构如下:

<div class="time-select">

<co-date-picker

type="week"

v-model="valueTime1"

format="yyyy年 第 WW 周 MM月 dd日"

placeholder="选择周"

@change="changeDate1"

>

</co-date-picker>

<co-input class="input" suffix-icon="el-icon-date" v-model="inputTime1" placeholder="请选择周"></co-input>

</div>

3. 获取当前选中时间点的 周时间和 第几周

getWeek(val) {

let firstDay = new Date(val.getFullYear(), 0, 1)

let dayOfWeek = firstDay.getDay() // 2020-01-01是周三  dayOfWeek==3

let spendDay = 1

if (dayOfWeek != 0) {

spendDay = 7 - dayOfWeek + 1 // 5 离下周一还有5天

}

firstDay = new Date(val.getFullYear(), 0, 1 + spendDay) // 2020-01-06是2020年第一个周一,是2020年第二个周

let d = Math.ceil((val.valueOf() - firstDay.valueOf()) / 86400000) // 当前时间距离2020-01-06有几天

let result = Math.ceil(d / 7) // 换算成周为单位 2020-01-06result是0,但其实是第二个周,所以默认加2

let week = result + 2 //如果使用的是默认为加2(如果将自然周设置为周一到周日则是加1)

return (

this.dataFomat(val.valueOf() - 86400000) +

'~' +

this.dataFomat(val.valueOf() + 5 * 86400000) +

' 第' +

week +

'周 '

)

},

4. 将传入的时间格式化

dataFomat(time) {

const date = new Date(time)

const H = date.getFullYear()

const M = (date.getMonth() + 1).toString().padStart(2, 0)

const D = date.getDate().toString().padStart(2, 0)

return `${H}年${M}月${D}日`

},

5. 然后赋值给input 输入框

changeDate1(val) {

this.valueTime1 = val.getTime()

this.inputTime1 = this.getWeek(val)

},

changeDate2(val) {

this.valueTime2 = val.getTime()

if (this.valueTime2 < this.valueTime1) {

this.$message.error('结束时间不能小于开始时间')

}

this.inputTime2 = this.getWeek(val)

},

6. 当前有个需求是 进入默认选中 最近6周

因为选择时间选择框时每次选中的是周一,那么我 需要拿到当前周一 和 6周前的周一

// 获取每周周一

getMondayDay(time) {

let dd = ''

if (time) {

dd = new Date(time)

} else {

dd = new Date()

}

var week = dd.getDay() // 获取时间的星期数

var minus = week ? week - 1 : 6

dd.setDate(dd.getDate() - minus) // 获取minus天前的日期

var y = dd.getFullYear()

var m = dd.getMonth() + 1 // 获取月份

var d = dd.getDate()

return new Date(y + '-' + m + '-' + d).getTime() / 1000

},

7. 赋值给input 输入框即可

let laseSixWeek = new Date().getTime() - 1000 * 60 * 60 * 24 * 42

// console.log(new Date().getTime(), laseSixWeek)

// console.log(this.getWeek(new Date(+(this.getWeeklyDay(laseSixWeek) + '000'))))

this.valueTime1 = laseSixWeek

this.inputTime1 = this.getWeek(new Date(+(this.getMondayDay(laseSixWeek) + '000'))) // 上6周

this.inputTime2 = this.getWeek(new Date(+(this.getMondayDay() + '000'))) // 当前周

// 获取周的另一种方法

// 获取周

getYearWeek(year, month, date) {

let dateNow = new Date(year, parseInt(month) - 1, date) //当前日期

let dateFirst = new Date(year, 0, 1) //当年第一天

let dataNumber = Math.round((dateNow.valueOf() - dateFirst.valueOf()) / 86400000) //当前日期是今年第多少天

return Math.ceil((dataNumber + (dateFirst.getDay() + 1 - 1)) / 7) //dataNumber + 当前年的第一天的周差距的和 在 除以7 就是本年第几周

},

element 时间选择器,设置周与周的区间相关推荐

  1. DateTimePicker 日期时间选择器设置默认时间

    DateTimePicker 日期时间选择器设置默认时间 default-value属性接受一个数组,第一项为开始时间,第二项为结束时间,时间格式为:"YY-mm-dd HH:mm:ss&q ...

  2. vue element ui 时间选择器 设置两个时间一前一后

    时间选择器,需求是下线时间必须在发布时间之后,但后台是储存两个值,就没使用element UI 的范围选择器 在标签设置:picker-options 属性,该属性下disabledDate(),控制 ...

  3. element 时间选择器禁用 秒 选项

    需求是不要时间选择器的秒选项 已解决 只需要 标签中的format不设置 ss 就可以了

  4. JavaScript 数字转汉字+element时间选择器快速选择

    window.CN = {1: '一',2: '二',3: '三',4: '四',5: '五',6: '六',7: '七',8: '八',9: '九',0: '零' } window.LEVEL = ...

  5. element时间选择器限制到时分秒_element-ui 日期时间选择器限制日期以及时间范围...

    element-ui 日期时间选择器限制日期以及时间范围. 实现效果: 实现方式: 业务背景: 日期:只能选择今天以后的日期(包含今天), 时间:只能选择当前日期时间一小时以后的时间. 实现效果: 实 ...

  6. element 时间选择器 限制时分秒_关于elementUI里日期选择器禁用时间的一些小技巧...

    DatePicker日期选择器算是日常开发中用得比较多的插件之一了,特别是做一些后台管理系统,选择时间.日期也是特别的方便,相比于原生的input中的date,elementUI中的日期选择器显得更加 ...

  7. element时间选择器限制到时分秒_ElementUI日期选择器时间选择范围限制

    Element是一套基于vue2.x的一个ui框架.官方文档也很详细,这里记录一个element-ui日期插件的补充 官方文档中使用picker-options属性来限制可选择的日期,下面举例补充: ...

  8. element 时间选择器——年

    <el-date-picker v-model="fileYear" type="year" placeholder="选择年"> ...

  9. elementPlus 日期时间选择器设置24小时制失效

    最近使用 vue3+elementplus 做项目有用到elementplus的日期时间选择组件,后端要求的入参格式为: 年-月-日 时:分, 而组件默认的是 年-月-日 时:分:秒,所以通过添加 f ...

最新文章

  1. 网络推广是做什么的知道网站做301定向跳转对优化有什么帮助?
  2. 深入理解ASCII,Unicode和UTF-8编码
  3. centos7搭建nexus
  4. IOS开发入门环境搭建输出helloworld
  5. NET问答: 如何在 ASP.NET Core 的 .json 文件中读取 AppSettings ?
  6. 极间电容matlab,电子仿真虚拟实验室
  7. neo4j 约束(CONSTRAINT)
  8. php zip class,DedeCMS 自带压缩工具 zip.class.php 的用法
  9. Android Studio如何添加jar包
  10. setFitView的zoom只是整数,导致缩放尺寸不合适的解决方案
  11. 计算机英语第一张思维导图,英语语法快速入门1-简单句(附思维导图) - 小黑电脑...
  12. 跟着Leo机器学习:sklearn之Nearest Neighbors
  13. ios服务器停止响应怎么办,iPhone 应用停止响应或意外关闭怎么办
  14. SAP能为纺织印染行业带来什么?
  15. 视频号怎么赚钱?4个赚钱小技巧,实现视频号流量变现!
  16. 在网页中加入MSN、QQ以实现即时通讯
  17. Oracle中的NVL()函数的用法
  18. Form 表单详解:案例、CSS 美化
  19. 【全源码及文档】基于JSP的网上订餐管理系统的设计与实现
  20. 热血传奇技术的一些基础知识

热门文章

  1. Docker部署Swarm集群
  2. 计算机网络的一些常识
  3. 【数论】拓展欧几里得
  4. excel导出多重表头utils_java excel复杂表头和复杂数据导出
  5. gstreamer-1.0学习笔记
  6. iPhone手机这9个实用功能,知道的人太少了
  7. 第2部分 字符串算法(提高篇)--第1章 哈希和哈希表1463:门票
  8. 解释Shaply值方法的合理性及其局限性(不足)
  9. 即时通讯-Android推送方案(MQTT)
  10. java ognl表达式_OGNL表达式详解