element-ui的周选择器中type为week的时使用value-format无效,并要求返回第几周的解决办法

1、问题描述

  • 在element-ui的日期选择器datepicker里边,当type=week的时候,我们可以看到下图的效果。但是它返回给输出台的值却是一个中国标准时间:
//输出台显示为
Tue May 07 2019 00:00:00 GMT+0800 (中国标准时间)  
  • 而后端需要的值仅仅是那个第几周,这个时候发现element-ui有一个value-format属性。但是奈何这个属性对type=week的时候不起作用。网上大家是这样解释的:

这个是bug,当type为week,不能使用value-format这个参数,否则会报错。
解决方法:在需要使用周的时间时,使用moment.js单独将时间进行"YYYY年 WW周"格式化

在这里插入图片描述

  • 但是呢,网上并没有讲怎么用moment.js去解决。所以我就写一篇用moment.js来解决的方法。

2、moment.js的安装和全局引用

  • moment.js安装
npm install moment -- save
  • 全局引入
import Moment from 'moment'
Vue.prototype.moment = Moment

之后就可以在页面里使用了。

3、html

				 <el-date-picker
                      v-model="weekNum"
                      @change="setWeekNum"
                      size="large"
                      type="week"
                      format="yyyy 第 WW 周"
                      placeholder="请选择周次">
                  </el-date-picker>

4、script

<script>
export default {
    data(){
      return{
           weekNum: '',
           weekVal:'',
           num: 1
      }
    },
    methods:{
      setWeekNum(){
       	var moment = require("moment");
       	//注意,当返回值是中国标准时间的格式时使用moment.js的时候一定要加上.utcOffset(480),用来转换时区
       	this.weekVal= moment(this.weekNum).utcOffset(480).format("WW")
        console.log(this.weekVal)  
        this.$emit('transferweekNum',this.weekVal)
      }
    }
}
</script>
  • moment(this.weekNum)代表对this.weekNum进行格式化。
  • .format(“WW”)代表格式化成哪种形式
  • 至于一些格式官网写的很清楚,需要的同学可以点击这里访问moment官网
GitHub 加速计划 / eleme / element
54.06 K
14.63 K
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:1 个月前 )
c345bb45 5 个月前
a07f3a59 * Update transition.md * Update table.md * Update transition.md * Update table.md * Update transition.md * Update table.md * Update table.md * Update transition.md * Update popover.md 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐