vue2 获取当前年月的方法

项目中有关于页面回显默认账期的需求,格式为yyyy-mm,该方法使用过程中出现了一个关于数据类型的小坑,特此记录一下。

方法如下:

getDate() {
    // 获取时间
    const nowDate = new Date();
    // 分别获取年、月
    const date = {
        year: nowDate.getFullYear(),
        month: nowDate.getMonth() + 1,
    };
    // 月份为单数时十位显示0
    const newMonth = date.month >= 10 ? date.month : "0" + date.month;
    // 返回格式为yyyymm的年月
    return date.year + newMonth;
}

出现的bug:当前月份为1-9月时没有出现任何问题,一旦当前月为10、11、12就会出现账期显示有误的问题。

原因:这里是因为数据类型变化导致返回值出现问题。

方法中调用的getFullYear()和getMonth()两个方法返回值为Number类型。代码执行到三目表达式时会出现以下两种情况:

1、当前月份为1~9月:则与字符串"0"拼接,这里会将date.month强制转换为String类型,在最后一步返回的时候再将date.year转换为String类型,返回拼接的字符串,账期正常回显。

2、当前月份为10~12月:直接将date.month赋值给newMonth,此时newMonth和date.year都是Number类型,会进行累加,返回一个累加的数字,而不是yyyymm格式的字符串。

解决办法:最后函数值返回的时候再做一次类型转换即可。例如:

return date.year + newmonth.toString();
return date.year + newmonth + '';

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用 JavaScript 的 Date 对象来获取当前时间,然后使用 Vue 绑定数据的方式将其显示在页面上。以下是一个简单的示例: HTML 代码: ```html <div> <p>当前时间:</p> <p>{{ currentDate }}</p> </div> ``` Vue 实例代码: ```javascript new Vue({ el: '#app', data: { currentDate: '' }, mounted() { setInterval(() => { const date = new Date(); const year = date.getFullYear(); const month = (date.getMonth() + 1).toString().padStart(2, '0'); const day = date.getDate().toString().padStart(2, '0'); this.currentDate = `${year}-${month}-${day}`; }, 1000); } }) ``` 在上面的示例中,我们定义了一个名为 `currentDate` 的数据属性,并在 `mounted` 钩子函数中使用 `setInterval` 方法每秒更新一次该属性的值。在更新时,我们使用 JavaScript 的 `Date` 对象获取当前时间,然后将日格式化后赋值给 `currentDate`,最后在页面上显示出来。 ### 回答2: 在Vue中,可以使用JavaScript内置的Date对象来获取当前时间的、日。 ```javascript <template> <div> <p>当前时间:{{ currentDate }}</p> <p>:{{ currentYear }}</p> <p>:{{ currentMonth }}</p> <p>日:{{ currentDay }}</p> </div> </template> <script> export default { data() { return { currentDate: '', currentYear: '', currentMonth: '', currentDay: '' }; }, mounted() { this.getCurrentDate(); }, methods: { getCurrentDate() { const date = new Date(); this.currentDate = date.toLocaleString(); this.currentYear = date.getFullYear(); this.currentMonth = date.getMonth() + 1; this.currentDay = date.getDate(); } } }; </script> ``` 在上述示例中,通过在mounted钩子函数中调用getCurrentDate方法获取当前时间的、日。在该方法内,首先定义一个新的Date对象,然后使用toLocaleString()方法将其转换为字符串,并将结果赋给currentDate。接着,使用getFullYear()方法获取当前份,并使用getMonth()和getDate()方法获取当前份和日期,并将结果赋给currentYear、currentMonth和currentDay变量。这样,就可以在模板中通过双花括号语法将获取到的、日显示出来。 ### 回答3: 在Vue获取当前时间的、日可以使用JavaScript的Date对象来实现。 1. 首先,在Vue组件的data选项中定义一个变量用于存储当前时间: ```javascript data() { return { currentDate: null } }, ``` 2. 在Vue的created钩子函数中获取当前时间并设置给currentDate变量: ```javascript created() { this.currentDate = new Date(); }, ``` 3. 接着,使用currentDate变量来访问、日: ```html <p>当前份:{{ currentDate.getFullYear() }}</p> <p>当前份:{{ currentDate.getMonth() + 1 }}</p> <p>当前日期:{{ currentDate.getDate() }}</p> ``` 以上代码中,通过调用Date对象的getFullYear()、getMonth()和getDate()方法,分别获取份、份(注意需要加1,因为份是从0开始计算的)和日期。 这样就可以在Vue模板中展示当前时间的、日了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值