飞道的博客

Vue中如何轻松获取日期

401人阅读  评论(0)

目录

简介

获取前几天的时间

 vue 根据指定日期 获取日期所在月份的第一天和最后一天

获取系统当天日期以及前一天和前一月前一年

1、首先vue项目中要安装到moment.js

2、使用原生js

3、也是vue获取,但是没有第一种那么简单暴力

 el-date-picker设置默认时间为当前时间


简介

Vue.js 是一个用于构建用户界面和单页应用程序的开源 JavaScript 框架。它由 Evan You 于 2014 年创建,此后成为用于构建 Web 应用程序的最流行的 JavaScript 框架之一。

Vue 以其简单性和灵活性着称,使各种技能水平的开发人员都可以轻松使用。它还具有体积小和开销低的特点,使其非常适合较小的项目和渐进式增强。

Vue 使用模板语法,允许开发人员以声明方式在 DOM 中呈现动态数据,从而轻松推断应用程序的状态。Vue 还使用虚拟 DOM,它提供了一种高性能机制,可以在底层数据发生变化时更新视图。

Vue 的架构基于一组可组合的组件,这些组件可以组合起来创建复杂的用户界面。Vue 还有一个内置的反应系统,可以轻松处理和管理状态,并支持指令、过滤器和一组强大的开发人员工具和插件。

总的来说,Vue.js 是构建动态、交互式用户界面和单页应用程序的绝佳选择。

获取前几天的时间

moment.js是一款现在对时间处理的强大的函数
如果没有安装的话先执行npm install moment命令


  
  1. import moment from 'moment';
  2. export default {
  3. data( ) {
  4. return {
  5. // 写在data中或者写在methods里面,一定要写不然会报错
  6. moment
  7. }
  8. },
  9. methods: {
  10. changeRecent( value) {
  11. // 开始日期
  12. moment( new Date()). format( 'YYYY-MM-DD')+ ' '+ '23:59:59'
  13. // 结束日期 value 3、7、30
  14. moment( new Date(). getTime() - value * 1000 * 24 * 60 * 60). format( 'YYYY-MM-DD')+ ' '+ '00:00:00');
  15. },
  16. }
  17. }

 vue 根据指定日期 获取日期所在月份的第一天和最后一天


  
  1. 将当前时间格式化
  2. dateFormat( time) {
  3. let date = new Date(time);
  4. let year = date. getFullYear();
  5. let wk = date. getDay()
  6. /* 在日期格式中,月份是从0开始的,因此要加0
  7. * 使用三元表达式在小于10的前面加0,以达到格式统一 如 09:11:05
  8. * */
  9. let month = date. getMonth() + 1 < 10 ? "0" + (date. getMonth() + 1) : date. getMonth() + 1;
  10. let day = date. getDate() < 10 ? "0" + date. getDate() : date. getDate();
  11. let hours = date. getHours() < 10 ? "0" + date. getHours() : date. getHours();
  12. let minutes = date. getMinutes() < 10 ? "0" + date. getMinutes() : date. getMinutes();
  13. let seconds = date. getSeconds() < 10 ? "0" + date. getSeconds() : date. getSeconds();
  14. let weeks = [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
  15. let week = weeks[wk]
  16. // 拼接
  17. return year + "年" + month + "月" + day + "日" + " " + hours + ":" + minutes + ":" + seconds + ' ' + week;
  18. },
  19. 使用: this. newDate = this. dateFormat( new Date());
  20. import moment from 'moment';
  21. // 写在data中或者写在methods里面,一定要写不然会报错
  22. moment,
  23. // 获取当前月的开始结束时间
  24. getCurrMonthDays( ) {
  25. let obj = {
  26. starttime: '',
  27. endtime: ''
  28. }
  29. obj. starttime = moment( moment(). month( moment(). month()). startOf( 'month'). valueOf()). format( 'YYYY-MM-DD HH:mm:ss');
  30. obj. endtime = moment( moment(). month( moment(). month()). endOf( 'month'). valueOf()). format( 'YYYY-MM-DD HH:mm:ss');
  31. return obj
  32. },
  33. 使用: console. log( this. getCurrMonthDays())

获取系统当天日期以及前一天和前一月前一年

1、首先vue项目中要安装到moment.js

获取前一天的日期

moment().subtract(1, 'day').format('YYYY-MM-DD') //1,day就代表前一天

如果要获取前一个月或者前一年就将day换成month或者year,剩下的时间可以根据实际情况来定
例如前一月

moment().subtract(1, 'month').format('YYYY-MM-DD')

前一年

moment().subtract(1, 'year').format('YYYY-MM-DD')

如果要按照具体的时间来的话,在’moment()'中加入对应格式的日期字符串比如’moment(‘2022-3-21’).subtract(2, ‘day’).format(‘YYYY-MM-DD’))

2、使用原生js


  
  1. <script>
  2. let a = getFMdate( 0)
  3. let b = getFMdate(- 1)
  4. let c = getFMdate( 8)
  5. console. log(a, b, c)
  6. function getFMdate (number, separator) {
  7. let n = parseInt(number)
  8. let nd = new Date()
  9. let day = nd. getDate()
  10. let setd = new Date(nd. setDate(day + n))
  11. let ryear = setd. getFullYear()
  12. let rmonth = setd. getMonth() + 1
  13. let rday = setd. getDate()
  14. let frmonth, frday;
  15. // month day + '0'
  16. if (rmonth < 10) {
  17. frmonth = '0' + rmonth
  18. } else {
  19. frmonth = rmonth
  20. }
  21. if (rday < 10) {
  22. frday = '0' + rday
  23. } else {
  24. frday = rday
  25. }
  26. // separator
  27. let sep = separator ? separator : '-'
  28. return ryear + sep + frmonth + sep + frday
  29. }
  30. </script>

传入 0 , 获取今天日期

传入负数, 获取过去N天日期

传入整数, 获取未来N天日期

这里主要是对setDate / setMonth / setYear的一个运用,笔者还是建议直接使用vue的moment()方法,底层已经帮我们封装好,不用计算跨月第一天的前一天或者跨年的前一天,省去了代码的冗余度,提高效率。

3、也是vue获取,但是没有第一种那么简单暴力


  
  1. // 前一天
  2. beforeDay( ) {
  3. //前一天
  4. let beforeDay = new Date(
  5. new Date( this. alarmformSearch. date). getTime() - 24 * 60 * 60 * 1000
  6. ); //计算当前日期 -1
  7. this. alarmformSearch. date = this. convertToDate(beforeDay); //格式化日期并赋值
  8. this. getWarnInfo();
  9. },

  
  1. // 前两天
  2. beforeTwoDay( ) {
  3. //前一天
  4. let beforeTwoDay = new Date(
  5. new Date( this. alarmformSearch. date). getTime() -
  6. 24 * 60 * 60 * 1000 -
  7. 24 * 60 * 60 * 1000
  8. ); //计算当前日期 -1
  9. this. alarmformSearch. date = this. convertToDate(beforeTwoDay); //格式化日期并赋值
  10. this. getWarnInfo();
  11. },

  
  1. convertToDate( date) {
  2. var date = new Date(date);
  3. var y = date. getFullYear();
  4. var m = date. getMonth() + 1;
  5. var d = date. getDate();
  6. m = m < 10 ? "0" + m : m; //月小于10,加0
  7. d = d < 10 ? "0" + d : d; //day小于10,加0
  8. return y + "-" + m + "-" + d;
  9. },

对比下来感觉第三种还不如写原生js,哈哈,还好vue底层帮我们封装好了现成的moment()方法,很方便

 el-date-picker设置默认时间为当前时间


  
  1. <el-form-item
  2. label= "创建时间"
  3. :label-width= "formLabelWidth"
  4. >
  5. <el-date-picker
  6. v-model= "addForm.createDate"
  7. style= "width:100%"
  8. type= "datetime"
  9. placeholder= "选择日期"
  10. />
  11. </el-form-item>
  12. //data里的数据
  13. data( ){
  14. addForm:{
  15. createDate: new Date() // 只需要在这里声明的时候直接值赋为 new Date()
  16. }
  17. }
  18. dingdKpData: "",
  19. this. dingdKpData = [ this. date_start, this. date_end]
  20. getdate( ){
  21. //年
  22. let year = new Date(). getFullYear();
  23. //月份是从0月开始获取的,所以要+1;
  24. let month = new Date(). getMonth() + 1;
  25. //日
  26. let day = new Date(). getDate();
  27. //时
  28. let hour = new Date(). getHours();
  29. //分
  30. let minute = new Date(). getMinutes();
  31. //秒
  32. let second = new Date(). getSeconds();
  33. return year + '-' + month + '-' + day;
  34. },

  
  1. <el-form-item label= "收款日期" prop= "collection_date">
  2. <el-date-picker v-model="baseInfoObj.collection_date" size="small" type="date" placeholder="收款日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 100%">
  3. </el-date-picker>
  4. </el-form-item>
  5. this. baseInfoObj. collection_date = this. dateFormat( 'YYYY-mm-dd', new Date())
  6. ==>main. js
  7. import { dateFormat } from './utils/day'
  8. Vue. prototype. dateFormat = dateFormat
  9. ==> utils=>day. js
  10. //获取当前日期 参数 "YYYY-mm-dd HH:MM:SS" new Date()
  11. export function dateFormat( fmt, date) {
  12. let ret;
  13. const opt = {
  14. "Y+": date. getFullYear(). toString(), // 年
  15. "m+": (date. getMonth() + 1). toString(), // 月
  16. "d+": date. getDate(). toString(), // 日
  17. "H+": date. getHours(). toString(), // 时
  18. "M+": date. getMinutes(). toString(), // 分
  19. "S+": date. getSeconds(). toString() // 秒
  20. // 有其他格式化字符需求可以继续添加,必须转化成字符串
  21. };
  22. for ( let k in opt) {
  23. ret = new RegExp( "(" + k + ")"). exec(fmt);
  24. if (ret) {
  25. fmt = fmt. replace(ret[ 1], (ret[ 1]. length == 1) ? (opt[k]) : (opt[k]. padStart(ret[ 1]. length, "0")))
  26. };
  27. };
  28. return fmt;
  29. }


转载:https://blog.csdn.net/qq_38334677/article/details/128652954
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场