在平常项目开发过程中,经常会遇到需要在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使用示例详解
# 几个
# 一个月
# 实际情况
# 自己的
# 的是
# 我想
# 有个
# 却是
# 都能
# 两种
# 希望能
# 下一
# 要做
# 就得
# 前日
# 转化为
# 期中
# 最适合
# 经常会
# 推到
相关文章:
C++如何使用std::optional?(处理可选值)
如何通过网站建站时间优化SEO与用户体验?
建站之星如何修改网站生成路径?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
Python lxml的etree和ElementTree有什么区别
c# 在ASP.NET Core中管理和取消后台任务
如何通过山东自助建站平台快速注册域名?
高端云建站费用究竟需要多少预算?
深圳网站制作案例,网页的相关名词有哪些?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
ui设计制作网站有哪些,手机UI设计网址吗?
如何在VPS电脑上快速搭建网站?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
制作门户网站的参考文献在哪,小说网站怎么建立?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何在自有机房高效搭建专业网站?
Swift中swift中的switch 语句
如何选择靠谱的建站公司加盟品牌?
如何选择服务器才能高效搭建专属网站?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
建站之星如何配置系统实现高效建站?
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
5种Android数据存储方式汇总
c# 服务器GC和工作站GC的区别和设置
如何用虚拟主机快速搭建网站?详细步骤解析
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
西安专业网站制作公司有哪些,陕西省建行官方网站?
SQL查询语句优化的实用方法总结
如何彻底删除建站之星生成的Banner?
建站主机默认首页配置指南:核心功能与访问路径优化
建站org新手必看:2024最新搭建流程与模板选择技巧
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
黑客如何通过漏洞一步步攻陷网站服务器?
简单实现Android验证码
常州自助建站费用包含哪些项目?
建站之星价格显示格式升级,你的预算足够吗?
建站主机选购指南:核心配置优化与品牌推荐方案
建站之星2.7模板快速切换与批量管理功能操作指南
Swift中switch语句区间和元组模式匹配
山东网站制作公司有哪些,山东大源集团官网?
音乐网站服务器如何优化API响应速度?
如何用景安虚拟主机手机版绑定域名建站?
如何配置WinSCP新建站点的密钥验证步骤?
如何在阿里云服务器自主搭建网站?
活动邀请函制作网站有哪些,活动邀请函文案?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
代购小票制作网站有哪些,购物小票的简要说明?
建站之星CMS五站合一模板配置与SEO优化指南
*请认真填写需求信息,我们会在24小时内与您取得联系。