Vue 中 (moment)操作日期的加减与展示

news2024/10/6 4:06:03

目录

基本语法 :

展示效果如下: 

 使用方式:

1、首先在 pacaage.json 中引入依赖 "moment": "^2.29.4"

 2、然后命令行 install 安装 :

3、最后,在使用的页面引入moment 

4、data 中我定义了一个初始控制变量 ctrlEndDate ,用来控制可选择的截止时间为当前时间。

5、页面 view 编写时间选择器的元素

6、函数控制

总结

几种加日期的方法:

减日期时间

其他用法


基本语法 :

moment().add(Number, String);//通过类型添加
moment().add(Duration);//时间间隔duration
moment().add(Object);//也可以使用对象

展示效果如下: 

 使用方式:

1、首先在 pacaage.json 中引入依赖 "moment": "^2.29.4"

 2、然后命令行 install 安装 :

npm install moment

3、最后,在使用的页面引入moment 

import moment from "moment";

4、data 中我定义了一个初始控制变量 ctrlEndDate ,用来控制可选择的截止时间为当前时间。

ctrlEndDate: moment().format("YYYY-MM-DD"), 

这里我在 data 内部还定义了一个变量,用来存放工作经历的数组变量 personJobList

personJobList:[{}],

5、页面 view 编写时间选择器的元素

<view class="mform" :hidden="tabbHidden" style="background: #d3e0ef;border-radius: 18px;margin-bottom:10px;"
				v-for="(item,index) in personJobList" :key="index">
					<view class="item">
						<view class="t">删除</view>
						<uni-icons type="minus" size="22" color="#4184ff" style="position:absolute;margin-top: 5px;right: 0;width: 5%;" @click="deleteJob(index)"></uni-icons>
					</view>
					<view class="item">
						<view class="t must">职位</view>
						<input v-model="item.position" class="m" placeholder="请输入职位"/>
					</view>
					<view class="item">
						<view class="t must">公司</view>
						<textarea v-model="item.company" class="m" placeholder="请输入公司"></textarea>
					</view>
					<view class="item">
						<view class="t must">开始时间</view>
						<picker class="m" mode="date" v-model="item.startDate" :start="item.ctrlEsstartDate" :end="ctrlEndDate" @change="bindStartDateChange($event,index)">
							<input type="text" disabled="true" v-model="item.startDate" placeholder="请选择开始时间"/>
						</picker>
					</view>
					<view class="item">
						<view class="t must">结束时间</view>
						<picker class="m" mode="date" v-model="item.endDate" :start="item.ctrlEestartDate" :end="ctrlEndDate" @change="bindEndDateChange($event,index)">
							<input type="text" disabled="true" v-model="item.endDate" placeholder="请选择结束时间"/>
						</picker>
					</view>
				</view>
				<view style="text-align: center;color: #4184ff;padding: 10px 0 10px 0;" @tap="addJob()">添加工作经历</view>

这里我们主要关注以下时间选择器相关的内容即可

<view class="item">
						<view class="t must">开始时间</view>
						<picker class="m" mode="date" v-model="item.startDate" :start="item.ctrlEsstartDate" :end="ctrlEndDate" @change="bindStartDateChange($event,index)">
							<input type="text" disabled="true" v-model="item.startDate" placeholder="请选择开始时间"/>
						</picker>
					</view>
					<view class="item">
						<view class="t must">结束时间</view>
						<picker class="m" mode="date" v-model="item.endDate" :start="item.ctrlEestartDate" :end="ctrlEndDate" @change="bindEndDateChange($event,index)">
							<input type="text" disabled="true" v-model="item.endDate" placeholder="请选择结束时间"/>
						</picker>
					</view>

mode : 代表时间的展示格式,我这里需要的就是 date

:start :代表时间可选择的开始节点

:end :代表时间可选择额截止节点(这里我控制的是当前时间,也就是 data 初始定义的变量ctrlEndDate)

@change :绑定的时间变化时的事件所触发的函数

6、函数控制

bindStartDateChange 是开始时间绑定的函数

bindEndDateChange 是结束时间绑定的函数

bindStartDateChange: function(e,index) {
				this.$nextTick(() => {
					setTimeout(() => {
						this.personJobList[index].startDate = e.detail.value;
						this.personJobList[index].ctrlEestartDate = moment(e.detail.value).add(1, 'days').format("YYYY-MM-DD");
						this.$forceUpdate() //强制更新
					}, 0)
				});
			},
			bindEndDateChange: function(e,index) {
				if(!Common.isExist(this.personJobList[index].startDate)){
					Common.alert("清先选择开始时间");
					return false;
				}
				this.$nextTick(() => {
					setTimeout(() => {
						this.personJobList[index].endDate = e.detail.value;
						this.$forceUpdate() //强制更新
					}, 0)
				});
			},

下面是我页面上添加工作履历和删除工作履历的函数

addJob(){
				for (var i = 0; i < this.personJobList.length; i++) {
					if(!Common.isExist(this.personJobList[i].position)){
						Common.alert("第"+(i+1)+"个工作经历中职位不可为空!");
						return false;
					}
					if(!Common.isExist(this.personJobList[i].position)){
						Common.alert("第"+(i+1)+"个工作经历中公司不可为空!");
						return false;
					}
					if(!Common.isExist(this.personJobList[i].startDate)){
						Common.alert("第"+(i+1)+"个工作经历中开始时间不可为空!");
						return false;
					}
					if(!Common.isExist(this.personJobList[i].endDate)){
						Common.alert("第"+(i+1)+"个工作经历中结束时间不可为空!");
						return false;
					}
				}
				let tempObj = {};
				if(this.personJobList.length>=1){
					let prevJobObj = this.personJobList[this.personJobList.length-1];
					tempObj = {"ctrlEsstartDate":moment(prevJobObj.endDate).add(1, 'days').format("YYYY-MM-DD")};
					this.$nextTick(() => {
						setTimeout(() => {
							this.personJobList.push(tempObj);
							this.$forceUpdate() //强制更新
						}, 0)
					});
				}
			},
			deleteJob(index){
				this.personJobList.splice(index,1);
			},

以上函数内,我用到了指定日期加一天的操作,那么下面就是它的使用类型。

类型

全(缩)写描述
years(y)
quarters(Q)季度
months(M)
weeks(w)
days(d)
hours(h)
minutes(m)
seconds(s)
milliseconds(ms)毫秒

比如:我要指定时间,2022-10-01 加一天

moment("2022-10-01").add(1, 'days').format("YYYY-MM-DD")

我这里用到的是 days ,你可以根据自己的需求来加 x 天(days),x 周(weeks)...

moment() 如果不指定时间,那就是默认当前时间。

总结

几种加日期的方法:

  • 链式添加时间
moment().add(7, 'days').add(1, 'months');

  • 使用对象添加时间
moment().add({days:7,months:1});

  • 时间间隔 duration
var duration = moment.duration({'days' : 1});
moment().add(duration); 

  • 指定特地日期时间
moment("2018-01-28").add(1, 'months');

减日期时间

  • 语法
moment().subtract(Number, String);
moment().subtract(Duration);
moment().subtract(Object);

用法,类似于添加日期

其他用法

  • 格式化时间以及获取时间戳方法
moment(Date.now()).format("YYYY-MM-DD HH:mm:ss");//获取格式时间
moment(Date.now(), 'YYYY-MM-DD HH:mm:ss').valueOf();//获取时间戳 
  •  把服务器地址转化成本地地址
import moment from "moment";
import 'moment/src/locale/en-gb'

parseDate = (date) => {
//先确认是utc时间 
 date = date.replace(" ", "T");
  utcDate = date + "Z";
  moment.locale("en-GB");
  console.log(moment(localDate));
  return moment(utcDate).format("DD-MM-YYYY");
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/59030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python的Django项目中常见命令以及常错点(Linux环境下)

USE 数据库名 --------------- 切换数据库更新virtualenv库&#xff08;用于创建虚拟环境&#xff09;&#xff1a;sudo pip install -U virtualenv创建虚拟环境&#xff1a;virtualenv -p python venv(虚拟环境的目录名)激活虚拟环境&#xff1a;source venv/b…

利用Python处理excel表格,panda合并表格、合并多个excel、多个sheet

前言 记录一下&#xff0c;在使用pandas处理excel表格表格时候&#xff0c;关于分割(切分)表格这一块儿的操作。 这个系列会有三篇左右文章&#xff0c;这是第二篇&#xff0c;excel表格合并 我们常说的 excel文件&#xff0c; 在广义上&#xff0c;是指以 xls 或 xlsx 为后缀…

[1173]regexp_replace()和regexp_substr()函数的用法

文章目录REGEXP_REPLACE的使用方法命令格式&#xff1a;regexp_replace(source, pattern, replace_string, occurrence)参数说明返回值常用案例其他案例正则符号释义regexp_substr()函数的用法REGEXP_REPLACE的使用方法 命令格式&#xff1a;regexp_replace(source, pattern, r…

PF-Net基于深度学习的点云补全网络

1. 论文和代码 论文&#xff1a;https://openaccess.thecvf.com/content_CVPR_2020/papers/Huang_PF-Net_Point_Fractal_Network_for_3D_Point_Cloud_Completion_CVPR_2020_paper.pdfhttps://openaccess.thecvf.com/content_CVPR_2020/papers/Huang_PF-Net_Point_Fractal_Netw…

微信小程序开发 开启

小程序和普通网页开发的区别 1.运行环境不同 小程序是运行在微信环境中&#xff0c;而网页是运行在浏览器环境中。 2.API不同 由于运行环境不同&#xff0c;所以小程序中&#xff0c;无法调用DOM和BOM的API。 但是&#xff0c;小程序中可以调用微信环境提供的各种API&#…

Vue框架常用组件的快速构建项目Ctrl+c Ctrl+a Ctrl+v第十四课)

不管前方的路有多苦&#xff0c;只要走的方向正确&#xff0c;不管多么崎岖不平&#xff0c;都比站在原地更接近幸福。 在学习技术的道路上&#xff1a;落后又要被挨打。这是现实 常用到的组件库:下面的网站在自己空闲时间去看看 下面的资源只需要ctrlc ctrla ctrv Border 边框…

业务:财务软件之会计六要素

一、引言 会计六要素是资产、负债、所有者权益、收入、费用、利润。资产随处可见&#xff0c;比如房屋、机器设备、运输工具、仓库里的货物等。负债确认必须具备以下条件&#xff1a;负债是企业承担的现时义务&#xff1b;负债预期会导致经济利益流出企业&#xff1b;负债是由…

[附源码]计算机毕业设计JAVA学生宿舍设备报修

[附源码]计算机毕业设计JAVA学生宿舍设备报修 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybati…

MobileOne实战:使用MobileOne实现图像分类任务(二)

文章目录训练导入项目使用的库设置全局参数图像预处理与增强读取数据设置模型定义训练和验证函数训练函数验证函数调用训练和验证方法再次训练再次训练的模型为什么只保存model.state_dict()关于加入EMA后验证集不得分的问题测试总结在上一篇文章中完成了前期的准备工作&#x…

C# 反射(一)基础概念

一、C# 反射&#xff08;refection&#xff09;基础概念 反射指程序可以访问、检测和修改它本身状态或行为的一种能力。 程序集包含模块&#xff0c;而模块包含类型&#xff0c;类型又包含成员。 反射则提供了封装程序集、模块和类型的对象。 您可以使用反射动态地创建类型…

Spring框架(七):Spring的Web配置应用

Spring的Web配置应用引子JavaWeb的三大组件模拟Spring的web开发组件spring-webSpring的web开发组件spring-web引子 痛定思痛&#xff0c;主要问题出现在自己雀氏不熟悉框架底层、一些面试题&#xff0c;以及sql的一些情况淡忘了。 本章节的开始是对于过去的重新回顾&#xff0…

MFC绘制二维图形【1】—— 使用映射模式函数自定义坐标系

目录 一、创建Test工程 二、自定义坐标系 三、映射模式&#xff08;MapMode&#xff09; 四、映射模式函数 1&#xff09;设置映射模式函数 2&#xff09;设置窗口范围函数 3)设置视区范围函数 4&#xff09;设置视区原点函数 5&#xff09;偏移矩形函数 五、 不改变…

MyTinySTL学习笔记:迭代器iterator(一)

前言 本系列文章所学习的Github上基于C11的开源项目MyTinySTL&#xff0c;项目地址为:&#xff08;https://github.com/Alinshans/MyTinySTL&#xff09;&#xff0c;感谢Alinshans大佬开源这个优质的学习项目。 一、什么是迭代器 无论是序列容器还是关联容器&#xff0c;最…

useWindowPrint 自定义的打印HOOK

useWindowPrint 自定义的打印HOOK 1 介绍 useWindowPrint 用于实现页面的打印&#xff0c;打印的效果相对来说比较好。useWindowPrint 支持 onBeforePrint、onBeforePrintContent、onAfterPrint 等回调&#xff0c;可以很方便地在不同阶段进行操作&#xff0c;如果觉得使用回…

基于PHP+MySQL蛋糕甜点销售网站的设计与开发

现如今先进科学技术高速发展&#xff0c;计算机技术已经被社会的各个领域广泛应用。随着计算机技术和通信技术的迅猛发展&#xff0c;互联网的规模也逐步增大&#xff0c;互联网的元素也随之逐渐增加&#xff0c;可以利用其发展通信&#xff0c;也可以利用其进行商业用途&#…

scratch小老鼠偷面包 电子学会图形化编程scratch等级考试二级真题和答案解析2022年9月

目录 scratch小老鼠偷面包 一、题目要求 1、准备工作 2、功能实现 二、案例分析 <

Vue Class与Style绑定

Vue Class与Style绑定1 Class绑定1.1 字符串写法1.2 数组写法1.3 对象写法2 Style绑定2.1 对象写法2.2 数组写法1 Class绑定 在Vue中&#xff0c;如果要为某个元素动态添加某个类&#xff0c;并不会使用document.getElementById等选择器将该元素获得&#xff0c;而是使用v-bin…

Tomcat突然停止运行/Server Tomcat v8.5 Server at localhost fail

Server Tomcat v8.5 Server at localhost failed to start./org.apache.catalina.startup.Catalina start 严重: 所必需的服务组件启动失败&#xff0c;所以无法启动Tomcat 1.使用eclipse写系统时突然无法运行jsp文件 2.查看任务管理器&#xff0c;将其启动&#xff0c;依旧不…

101-115-hive-优化执行计划表优化

101-压缩存储-优化&#xff1a; 执行计划&#xff08;Explain&#xff09; 1&#xff09;基本语法 EXPLAIN [EXTENDED | DEPENDENCY | AUTHORIZATION] query &#xff08;2&#xff09;查看详细执行计划 hive (default)> explain extended select * from emp; hive (de…

OpenGL 图像绿幕抠图

目录 一.OpenGL 图像绿幕抠图 1.IOS Object-C 版本1.Windows OpenGL ES 版本2.Windows OpenGL 版本 二.OpenGL 图像绿幕抠图 GLSL Shader三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL E…