【摘要】首先介绍一下大的背景:就是我们的手机端项目涉及到购买会员之后,购买所有的商品都会有相应的折扣。那么我们的后台管理系统就可以指定用户,为其开通会员。核心技术: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日期如何进行加减计算相关推荐

  1. js日期加减一天_JS日期加减,日期运算代码

    这篇文章主要介绍了JS日期加减,日期运算代码,需要的朋友可以参考下 一.日期减去天数等于第二个日期 function cc(dd,dadd){ //可以加上错误处理 var a = new Date( ...

  2. js日期加减一天_Js 日期加减天数

    function addDate(dd,dadd){ var a = new Date(dd) a = a.valueOf() a = a + dadd * 24 * 60 * 60 * 1000 a ...

  3. mysql日期加一年时间_mysql日期怎么加一年

    mysql日期加一年的方法:日期增加一年,使用updata更新语句,代码为[UPDATE table SET date = DATE_ADD(date, INTERVAL 1 YEAR)]. mysq ...

  4. js日期加减一天_js日期加减

    Date.prototype.Format = function(fmt) { //author: meizz var o = { "M+" : this.getMonth() + ...

  5. js日期加减一天_Js日期加减(天数),时间加减,日期运算,可直接调用

    根据传入的日期做加减法计算,整数为加法,负数为减法,但是是天. num可传入: 1,2,3,-1,-2,-3等,默认是加一天:date可传入: 2017-01-01格式的,不传的话默认是当天日期. f ...

  6. js日期加减一天_js 日期加减 (转)

    Date 对象用于处理日期和时间. 创建 Date 对象的语法: var myDate=new Date() Date 对象会自动把当前日期和时间保存为其初始值. 参数形式有以下5种: new Dat ...

  7. java获取的日期加一天_java calendar 日期实现不断加一天的代码

    我就废话不多说了,大家还是直接看代码吧~ Calendar cc=Calendar.getInstance();//获得系统时间 cc.add(cc.DATE, 1);//让日子每天向后加一天 dat ...

  8. java日期加一天_Java 关于日期加一天(日期往后多一天)

    1.原来Java的日期添加不像.NET的.Add: import java.util.Date ; Date date=new   Date();//取时间 System.out.println(da ...

  9. oracle给日期加特定天数,oracle按照日期求连续天数的数据sql

    ---原始数据 -- 以下结果是运行:(将连续的数据通过RN展示表示是一组数据) SELECT OCCUR_DATE,SITE_NO,VOUH_NO,ACCOUNT,TRUNC(T.OCCUR_DAT ...

最新文章

  1. python设置画布背景图_如何使画布中的背景图像随窗口展开?
  2. [deviceone开发]-日程日历示例
  3. 语言可以直接访问位元元址_OOP语言中FBC问题对应用框架的影响
  4. HDU - 3126 Nova(最大流+二分+简单几何)
  5. cefsharp.wpf离线安装包下载_在vscode里编写c++程序(解决gdb下载失败问题)
  6. 知道自己想要什么,保持自己的节奏。
  7. html中点击照片时放大缩小,基于jquery实现一张图片点击鼠标放大再点缩小
  8. ajax加载进度百分比,在ajax中显示加载百分比的进度条,php
  9. linux centos 7定时任务添加,CentOS 7 cron服务 定时任务使用方法
  10. mysql my includedir_MySQL:读取my.cnf的顺序问题
  11. 中消协发布疫情期间消费维权热点:口罩类投诉最多
  12. caioj 1081 动态规划入门(非常规DP5:观光游览)
  13. php打造自己的喜马拉雅,打造自己的私人知识宝库利器——mybase 7.3.5
  14. app中的h5游戏分享到微信等第三方
  15. Python pip卸载包
  16. Js实现实时显示系统时间(获取当前时间并显示)
  17. Dynamics CRM 365 - 零基础入门学习后端插件用法(样例使用方法)
  18. 计算机二级ms通过率,计算机二级office通过率高吗
  19. Linus最高产,2021 Linux内核开发统计出炉
  20. 使用摄像头解析二维码,且可以生成含具体信息的二维码

热门文章

  1. .properties文件的格式
  2. 在 JavaScript 中用破折号替换空格
  3. 2021-11-11 用eclipse编写摇骰子
  4. word邮件合并数据源html,数据源域中的超链接转换为纯文本,当您在 Word 2002 和 Word 2003 中的 HTML 格式的电子邮件执行邮件合并...
  5. 如何关闭MacBook的键盘背光
  6. JavaWeb - 基础面试题(详细)
  7. python自动加注释
  8. TIA博途中计算多个数据的算术平均值的具体方法示例
  9. 算法学习-动态规划,纸老虎打倒他(持续更新中)
  10. Xilinx FPGA SelectIO串并转换IP核使用笔记