在平常项目开发过程中,经常会遇到需要在JavaScript中处理时间的情况,无非两种(1,逻辑处理 2,格式转换处理)。当然要说相关技术博,园子里闭着眼睛都能抓一把,但是我要做的是:既然有幸被我碰到了,就要尽可能的分析转化为自己最适合自己的东西,成为自己知识库的一部分;同时希望能帮助有需要的同学解决遇到的相关小问题。

时间逻辑处理
此类型常用需求为:推算几个月后(前)的今天的日期。
/**
*获取几个月前的输入日期
*{param:DateTime} date 输入日期(YYYY-MM-DD)
*{param:number } monthNum 月数
*/
GetPreMonthDay: function (date,monthNum)
{
var dateArr = date.split('-');
var year = dateArr[0]; //获取当前日期的年份
var month = dateArr[1]; //获取当前日期的月份
var day = dateArr[2]; //获取当前日期的日
var days = new Date(year, month, 0);
days = days.getDate(); //获取当前日期中月的天数
var year2 = year;
var month2 = parseInt(month) - monthNum;
if (month2 <=0) {
year2 = parseInt(year2) - parseInt(month2 / 12 == 0 ? 1 : parseInt(month2) / 12);
month2 = 12 - (Math.abs(month2) % 12);
}
var day2 = day;
var days2 = new Date(year2, month2, 0);
days2 = days2.getDate();
if (day2 > days2) {
day2 = days2;
}
if (month2 < 10) {
month2 = '0' + month2;
}
var t2 = year2 + '-' + month2 + '-' + day2;
return t2;
}
/**
*获取下一个月的输入日期
*{param:DateTime} date 输入日期(YYYY-MM-DD)
*{param:number } monthNum 月数
*/
GetNextMonthDay: function (date, monthNum)
{
var dateArr = date.split('-');
var year = dateArr[0]; //获取当前日期的年份
var month = dateArr[1]; //获取当前日期的月份
var day = dateArr[2]; //获取当前日期的日
var days = new Date(year, month, 0);
days = days.getDate(); //获取当前日期中的月的天数
var year2 = year;
var month2 = parseInt(month) + parseInt(monthNum);
if (month2 >12) {
year2 = parseInt(year2) + parseInt((parseInt(month2) / 12 == 0 ? 1 : parseInt(month2) / 12));
month2 = parseInt(month2) % 12;
}
var day2 = day;
var days2 = new Date(year2, month2, 0);
days2 = days2.getDate();
if (day2 > days2) {
day2 = days2;
}
if (month2 < 10) {
month2 = '0' + month2;
}
var t2 = year2 + '-' + month2 + '-' + day2;
return t2;
}
测试效果:
发没发现有个问题,通过29日来推,前后都会是29。 1月31号推到二月就是2月29(因为2月就29天)。
那么这种逻辑对于有些需求来说就得根据实际情况变动一下。譬如:我想缴纳预存一个月的费用。当前我已经缴纳了2.1-2.29(2月一整月)的费用,预存一个月就应该是(3.1-3.31)。通过此逻辑得到却是3.1-3.29,所以使用请根据实际情况!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# javascript
# 日期加减
# js获取几个月后的日期
# js比较日期相差几个月
# 超实用的javascript时间处理总结
# JavaScript中的时间处理小结
# JavaScript Serializer序列化时间处理示例
# 时间处理工具 dayjs使用示例详解
# 几个
# 一个月
# 实际情况
# 自己的
# 的是
# 我想
# 有个
# 却是
# 都能
# 两种
# 希望能
# 下一
# 要做
# 就得
# 前日
# 转化为
# 期中
# 最适合
# 经常会
# 推到
相关文章:
如何登录建站主机?访问步骤全解析
建站之星如何助力网站排名飙升?揭秘高效技巧
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
如何在服务器上配置二级域名建站?
建站主机是什么?如何选择适合的建站主机?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
网站制作需要会哪些技术,建立一个网站要花费多少?
PHP 500报错的快速解决方法
广州美橙建站如何快速搭建多端合一网站?
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
Android滚轮选择时间控件使用详解
动图在线制作网站有哪些,滑动动图图集怎么做?
招贴海报怎么做,什么是海报招贴?
实例解析angularjs的filter过滤器
视频网站制作教程,怎么样制作优酷网的小视频?
建站之星ASP如何实现CMS高效搭建与安全管理?
如何在IIS中新建站点并解决端口绑定冲突?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
建站主机系统SEO优化与智能配置核心关键词操作指南
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
如何用西部建站助手快速创建专业网站?
如何在企业微信快速生成手机电脑官网?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
建站之星如何配置系统实现高效建站?
如何挑选优质建站一级代理提升网站排名?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
如何快速查询域名建站关键信息?
建站之星展会模版如何一键下载生成?
利用JavaScript实现拖拽改变元素大小
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
建站之星多图banner生成与模板自定义指南
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
临沂网站制作公司有哪些,临沂第四中学官网?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
建站之星好吗?新手能否轻松上手建站?
微信推文制作网站有哪些,怎么做微信推文,急?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
建站之星免费版是否永久可用?
C#如何使用XPathNavigator高效查询XML
建站之星微信建站一键生成小程序+多端营销系统
定制建站价位费用解析与套餐推荐全攻略
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
定制建站如何定义?其核心优势是什么?
网站按钮制作软件,如何实现网页中按钮的自动点击?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
制作企业网站建设方案,怎样建设一个公司网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。