js日期加减一天_js日期如何进行加减计算
【摘要】首先介绍一下大的背景:就是我们的手机端项目涉及到购买会员之后,购买所有的商品都会有相应的折扣。那么我们的后台管理系统就可以指定用户,为其开通会员。核心技术:js日期如何进行加减计算。
【作者】x-teamer成员:shuaiyin
第一步,也是实现需求的开始,即准备工作。如下图:
此时,我所选中的是xx店 王大毛这个用户,点击开通会员按钮:
首先为了方便用户,也为了避免用户进行误操作,所以给了个提示的弹出框。在此处,使用js的点击事件。具体代码如图:
核心字段是:user_remark_017:time,user_remark_018:'365'
含义是:time是获取当前时间,365代表会员所持续的时间。
第一核心:js如何获取当前时间?
首先定义一个变量time,
var time = new Date();
console.log(time);
输出结果如下:Sun Dec 15 2019 21:00:21 GMT+0800 (中国标准时间)
但是输出结果还不是我们想要的,我们想要的时间格式应该是这种:
2019-12-15 21:01:34。
所以这里需要加个自定义函数进行修改,下面是我封装的函数如下:
第二核心:js获取到当前的时间之后,修改成我们想要的格式。
getDateInfo:function(date){
return date.getFullYear()+'年'+M.formatDate(date.getMonth()+1)+'月'+M.formatDate(date.getDate())+'日';
},
我们直接进行调用:
var time = that.getDateInfo(new Date());
这样我们就可以拿到上述所要的时间格式。
这时候,我们就为xx店 王大毛用户成功开通了会员,让我们来进行验证一下,前端验证数据是否正确的做法就是打开数据库进行查看,我们到底有没有将这两个字段插入到数据库中呢?
首先,打开我的数据库,果不其然,我顺利的找到了id为4171的用户。这时候我们的重点是找user_remark_017和user_remark_018这两个字段到底有没有成功的放到数据库中,
yes,我们成功的做到了,也就是成功的为用户开通了会员。功能已经实现,那么接下来就是展示功能的实现,前提是用户有会员和非会员两种展示,所以我们需要对日期进行判定,也就是说,我们开通会员的时间只有365天,那么当时间到期之后,此会员应该就是作废的。那么接下来就是验证和实现这一功能需求。
第三核心:会员展示和到期判定
那么要实现这个需求,我们首先要理清楚这个逻辑,也就是说会员开通的时间有365天,也就是当做一年来判定。即:开通会员的时间加上一年,和当前的时间进行比较,或者说当前的时间减去一年和开通会员的时间进行比较。
如果:(当前时间减一年)-开通会员时间<=0,那么此用户还处在会员时间内,他就还是会员。
明白了逻辑之后就是功能的实现:
第四核心:进行日期加减
先上我的代码:
var date = new Date();//获取当前时间
var year = date.getFullYear()-1;//当前时间的年份减去一年
var month = date.getMonth()+1;//时间的月份获取
var day = date.getDate();//时间的日,获取
var time = year+'-'+month+'-'+day;//时间进行拼接
输出结果如下:
2018-12-15 (yes,我们当前日期年份减去一年实现)
var vip_time = data[i].user_remark_017;//后台拿到的数据,也就是保存在数据库中开通会员的时间,但是时间格式也不是我们想要的。我们需要把时分秒给过滤掉。
第五核心:数据库中数据过滤
var vip_time_now = vip_time.substr(0,10);
输入结果如下:
2019-12-15 (yes,数据库中数据过滤,我们也实现了)
第六核心:时间进行比较
代码如下:
var a = (Date.parse(time) - Date.parse(vip_time_now)) / 3600 / 1000;
if(a<=0){
var nick_name = data[i].nick_name+'(会员)'
}
if(a>=0){
var nick_name = data[i].nick_name
}
接下来,就是验证显示是否正确的时候:
yes,用户会员开通了,展示也正常了。那么基本的功能就实现了。但是还没有结束:我们需要进行验证,验证的最好方式就是直接修改数据库中的user_remark_017的值,也就是开通会员的时间:
我把开通会员的时间改成了2018-12-14,也就是说,按照会员时间的设置,用户的会员时长是到期了的,接下来就是验证奇迹的时刻,打开浏览器按下我们的F5进行刷新:
yes,果然结果没有出乎我们的意料,功能需求解决,验证没问题。
总结:这个需求的话,并算不上很麻烦。但是我们可以从中总结到很多经验:
1.解决问题,实现需求的前提,就是要理解需求逻辑,我记得我的老板说过这样一句话,我终身受用:解决问题的第一步就是要将问题给还原出来。这句话对程序猿们来说,真可谓是完美契合。
2.作为一个前端,解决问题bug并不是结束,要学会操作数据库,因为前端所做的一切,所处理的数据最终是要放在数据库中,数据库是不会骗人的。
3.程序猿的基本技能,也是最基本的要求,也是最低需求,前面两种才是重中之重。其实也就一句话:眼光的远近取决了最终你能在职业生涯上走多远。奉劝程序猿们切记切记
我们是不一样的技术团队:
(我们认为:所有的企业行为,都解读为交易行为,无论是摩拜单车、外卖平台、自动售货机、招聘社区、家政服务,都用交易的语言来表达,我们专栏里面有很多实际案例和开发过程和交付流程)
(类似于元素周期表,我们把交易拆解成元素级别,根据业务定制组装,完全复原个性化需求,我们专栏里面有很学术也很实际的介绍)
(每个项目设置: 导师成长基金、参与人员的奖励,全员股权池,创业氛围浓郁,我们专栏公开分享了我们的一些经验)
(专治各种复杂的业务场景, 我们通过简洁的元素和分层组合,来完成复杂场景的业务定制,我们在这一块有非常多的案例,在互联网创业专栏里面有详细描述)
js日期加减一天_js日期如何进行加减计算相关推荐
- js日期加减一天_JS日期加减,日期运算代码
这篇文章主要介绍了JS日期加减,日期运算代码,需要的朋友可以参考下 一.日期减去天数等于第二个日期 function cc(dd,dadd){ //可以加上错误处理 var a = new Date( ...
- js日期加减一天_Js 日期加减天数
function addDate(dd,dadd){ var a = new Date(dd) a = a.valueOf() a = a + dadd * 24 * 60 * 60 * 1000 a ...
- mysql日期加一年时间_mysql日期怎么加一年
mysql日期加一年的方法:日期增加一年,使用updata更新语句,代码为[UPDATE table SET date = DATE_ADD(date, INTERVAL 1 YEAR)]. mysq ...
- js日期加减一天_js日期加减
Date.prototype.Format = function(fmt) { //author: meizz var o = { "M+" : this.getMonth() + ...
- js日期加减一天_Js日期加减(天数),时间加减,日期运算,可直接调用
根据传入的日期做加减法计算,整数为加法,负数为减法,但是是天. num可传入: 1,2,3,-1,-2,-3等,默认是加一天:date可传入: 2017-01-01格式的,不传的话默认是当天日期. f ...
- js日期加减一天_js 日期加减 (转)
Date 对象用于处理日期和时间. 创建 Date 对象的语法: var myDate=new Date() Date 对象会自动把当前日期和时间保存为其初始值. 参数形式有以下5种: new Dat ...
- java获取的日期加一天_java calendar 日期实现不断加一天的代码
我就废话不多说了,大家还是直接看代码吧~ Calendar cc=Calendar.getInstance();//获得系统时间 cc.add(cc.DATE, 1);//让日子每天向后加一天 dat ...
- java日期加一天_Java 关于日期加一天(日期往后多一天)
1.原来Java的日期添加不像.NET的.Add: import java.util.Date ; Date date=new Date();//取时间 System.out.println(da ...
- oracle给日期加特定天数,oracle按照日期求连续天数的数据sql
---原始数据 -- 以下结果是运行:(将连续的数据通过RN展示表示是一组数据) SELECT OCCUR_DATE,SITE_NO,VOUH_NO,ACCOUNT,TRUNC(T.OCCUR_DAT ...
最新文章
- python设置画布背景图_如何使画布中的背景图像随窗口展开?
- [deviceone开发]-日程日历示例
- 语言可以直接访问位元元址_OOP语言中FBC问题对应用框架的影响
- HDU - 3126 Nova(最大流+二分+简单几何)
- cefsharp.wpf离线安装包下载_在vscode里编写c++程序(解决gdb下载失败问题)
- 知道自己想要什么,保持自己的节奏。
- html中点击照片时放大缩小,基于jquery实现一张图片点击鼠标放大再点缩小
- ajax加载进度百分比,在ajax中显示加载百分比的进度条,php
- linux centos 7定时任务添加,CentOS 7 cron服务 定时任务使用方法
- mysql my includedir_MySQL:读取my.cnf的顺序问题
- 中消协发布疫情期间消费维权热点:口罩类投诉最多
- caioj 1081 动态规划入门(非常规DP5:观光游览)
- php打造自己的喜马拉雅,打造自己的私人知识宝库利器——mybase 7.3.5
- app中的h5游戏分享到微信等第三方
- Python pip卸载包
- Js实现实时显示系统时间(获取当前时间并显示)
- Dynamics CRM 365 - 零基础入门学习后端插件用法(样例使用方法)
- 计算机二级ms通过率,计算机二级office通过率高吗
- Linus最高产,2021 Linux内核开发统计出炉
- 使用摄像头解析二维码,且可以生成含具体信息的二维码
热门文章
- .properties文件的格式
- 在 JavaScript 中用破折号替换空格
- 2021-11-11 用eclipse编写摇骰子
- word邮件合并数据源html,数据源域中的超链接转换为纯文本,当您在 Word 2002 和 Word 2003 中的 HTML 格式的电子邮件执行邮件合并...
- 如何关闭MacBook的键盘背光
- JavaWeb - 基础面试题(详细)
- python自动加注释
- TIA博途中计算多个数据的算术平均值的具体方法示例
- 算法学习-动态规划,纸老虎打倒他(持续更新中)
- Xilinx FPGA SelectIO串并转换IP核使用笔记