JS时间扩展插件
前言
原生JS有些没定义的方法只能自己封装了,比如获取现在相隔本年过了几天以及过了多少周,这些都是原JS里没有的方法,现在插件只有一些方法,后期再慢慢扩展
插件使用方法
引用TimeToPack.js文件
调用_.GetOneYearToDay()得到本年已经过了几天
调用_.GetOneYearToDay(int Year,int Month,int Day) 参数(int年,int月,int日),通过参数得到相隔今日时间,3个参数可选填,比如_.GetOneYearToDay(2019,3)这样默认获取2019/3/1相隔今日时间
调用_.GetDayToWeek()得到现在是第几周
调用_.GetDayToWeek(int Day)通过参数得到周数
调用_.LeapYearJudgment()得到今年是否是闰年(返回true则是,返回false则不是)
调用_ LeapYearJudgment(int Year)通过参数获取是否是闰年(返回true则是,返回false则不是)
源代码
; (function (window, undefined) {
var
TimeToPack = function (e) {
return new TimeToPack.fn.init(e);
};
TimeToPack.fn = TimeToPack.prototype = {
};
var init = TimeToPack.fn.init = TimeToPack.prototype.TimeToPack = function (e) {
this.name = "init";
};
init.prototype = TimeToPack.prototype;
TimeToPack.GetOneYearToDay = function () {
var NowDate = new Date();
var SetDate = new Date();
var time1 = null, time2 = null, time_ = null;
if (arguments.length === 0) {
SetDate.setFullYear(new Date().getFullYear());
SetDate.setMonth(0);
SetDate.setDate(1);
} else if (arguments.length === 1) {
SetDate.setFullYear(arguments[0]);
SetDate.setMonth(0);
SetDate.setDate(1);
} else if (arguments.length === 2) {
SetDate.setFullYear(arguments[0]);
SetDate.setMonth(arguments[1] - 1);
SetDate.setDate(1);
} else if (arguments.length === 3) {
SetDate.setFullYear(arguments[0]);
SetDate.setMonth(arguments[1] - 1);
SetDate.setDate(arguments[2]);
}
time1 = Date.parse(SetDate.toLocaleDateString()) / 1000;
time2 = Date.parse(NowDate.toLocaleDateString()) / 1000;
time_ = time1 - time2;
console.log(time_, time1, time2);
if (time_ < 0) {
time_ -= (time_ * 2);
}
return (time_ / (3600 * 24)) + 1;
};
TimeToPack.GetDayToWeek = function () {
var target = arguments[0];
if (arguments.length === 0) {
target = _.GetOneYearToDay();
}
target /= 7;
return parseInt(target);
};
TimeToPack.LeapYearJudgment = function () {
var ADate = new Date();
var target = arguments[0];
if (arguments.length === 0) {
target = ADate.getFullYear();
}
target /= 4;
if (Math.floor(target) === target) {
return true;
}
return false;
}
window.TimeToPack = window._ = TimeToPack;
})(window, undefined);
源码解析
抽取一部分方法解析
TimeToPack.GetOneYearToDay = function () {
var NowDate = new Date();
var SetDate = new Date();
var time1 = null, time2 = null, time_ = null;
if (arguments.length === 0) {
SetDate.setFullYear(new Date().getFullYear());
SetDate.setMonth(0);
SetDate.setDate(1);
} else if (arguments.length === 1) {
SetDate.setFullYear(arguments[0]);
SetDate.setMonth(0);
SetDate.setDate(1);
} else if (arguments.length === 2) {
SetDate.setFullYear(arguments[0]);
SetDate.setMonth(arguments[1] - 1);
SetDate.setDate(1);
} else if (arguments.length === 3) {
SetDate.setFullYear(arguments[0]);
SetDate.setMonth(arguments[1] - 1);
SetDate.setDate(arguments[2]);
}
time1 = Date.parse(SetDate.toLocaleDateString()) / 1000;
time2 = Date.parse(NowDate.toLocaleDateString()) / 1000;
time_ = time1 - time2;
console.log(time_, time1, time2);
if (time_ < 0) {
time_ -= (time_ * 2);
}
return (time_ / (3600 * 24)) + 1;
};
这个GetOneYearToDay()方法就是返回过了本年的天数
声明变量
var NowDate = new Date();
var SetDate = new Date();
var time1 = null, time2 = null, time_ = null;
arguments是获取参数
没有参数传入会返回长度为0的数组,有参数传入就会返回N个参数长度
判断
if (arguments.length === 0) {}
如果arguments返回的长度强等于0就会执行下面的代码,也就是GetOneYearToDay()不给参数就会执行这里的代码
SetDate.setFullYear(new Date().getFullYear()); //设置SetDate的年份为本年
SetDate.setMonth(0);//设置SetDate的月份为1月,因为月份是有索引的索引0就是1月
SetDate.setDate(1);设置SetDate的日期为1日
其他判断以此类推
time1 = Date.parse(SetDate.toLocaleDateString()) / 1000;
time2 = Date.parse(NowDate.toLocaleDateString()) / 1000;
time_ = time1 - time2;
前面判断完成就给每个变量赋值
Date.parse()把括号里的日期转为毫秒
SetDate.toLocaleDateString()获取当前日期的字符串
Date.parse(SetDate.toLocaleDateString()) / 1000 得到秒数
time1 – time2 得到相差值
再次判断
if (time_ < 0) {
time_ -= (time_ * 2);
}
如果 time_值为负数 则 time_ 减它(本身 * 2)再赋值 就会返回正数
return (time_ / (3600 * 24)) + 1;
最后返回 time_ / (3600 * 24) + 1 得到相差天数
END
JS时间扩展插件的更多相关文章
- 一款好用的JS时间日期插件layDate
觉得这个插件很不错,使用起来也很方便,推荐使用 1.插件截图 2.插件配置 选择很多,配置也很简单,插件官网:https://www.layui.com/laydate/配置说得很明确,基本操作就是: ...
- jQuery时间轴插件timeline.js
http://www.jq22.com/jquery-info13695 http://www.jq22.com/jquery-info13357 简要教程 timeline.js是一款jQuery时 ...
- js时间倒计时
看了网上的其他的例子,觉得写的都有点复杂,不好理解,于是自己动手写了个. 本来想封装成jquery插件,但是觉得因为功能很简单,没有必要做成jquery插件,引用的时候不需要引入jqery库,这里直接 ...
- 自制Chrome扩展插件:用于重定向js
前言 作为一个前端开发, 在调试生产环境的代码时,是否苦于生产环境代码被压缩,没有sourcemap? 有没有想过将生产环境的js直接重定向为本地开发环境的js? 玩微前端时,有没有想过用本地的子应用 ...
- jQuery时间格式插件-moment.js的使用
jQuery时间格式插件-moment.js的使用 moment.js插件的使用,使用之前在页面引入对应的js文件: 详细的操作可见moment中文官网:http://momentjs.cn/ 日期格 ...
- Sharepoint 2013列表视图和字段权限扩展插件(免费下载)!
记得2014年春节期间,有博客园的网友通过QQ向我咨询Sharepoint 2013列表视图和字段权限扩展,因为之前他看到我博客介绍Sharepoint 2010列表视图和字段的权限控制扩展使用,问有 ...
- jQuery时间轴插件:jQuery Timelinr
前言 这是一款可用于展示历史和计划的时间轴插件,尤其比较适合一些网站展示发展历程.大事件等场景.该插件基于jQuery,可以滑动切换.水平和垂直滚动.支持键盘方向键.经过扩展后可以支持鼠标滚轮事件. ...
- 100个精选zencart扩展插件
100个精选zencart扩展插件 特别推荐 1. 数据库备份 2. 产品横向布局. 3. 邮件订阅Newsletter Subscribe. 4. google 翻译google_translate ...
- Chrome扩展插件流程
一.浏览器插件基础步骤: 1.文件最基础的配置 : 一个manifest文件.一个或多个html文件.可选的一个或多个javascript文件.可选的任何需要的其他文件,例如图片:在开发应用(扩展)时 ...
随机推荐
- 深度神经网络conda环境下载
介绍 因为使用conda下载数据有时候因为网络问题下载非常慢,因此我把conda的环境备份好,到时可以直接使用conda的conda create -n 新环境名字 –clone 环境的路径 , 直接 ...
- 深入理解python语言
2008年,安卓操作系统诞生:PC时代向移动时代转换 互联网,视窗 2017/5/27柯洁最终0:3AlphaGo 计算机技术的演进过程 不同编程语言的设计初心和适用对象 C语言核心解决的是性能问题, ...
- (jvm调优)一、linux内存查看命令
转载自https://blog.csdn.net/dongzhongyan/article/details/80067796 开始学习服务器性能查看以及调优 1.整体情况查看(任务管理器):top 第 ...
- java 常用类-String-1
一.字符串相关的类 1.1 String 的特性 String类:代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. String是一个fin ...
- 使用SpringBoot的方式配置过滤器
springboot 不存在web.xml 那么如何配置过滤器呢 springboot提供了一种方式 通过spring容器配置 @Bean public FilterRegistrationBean ...
- [De1CTF 2019]Giftbox 分析&&TPOP学习
[De1CTF 2019]Giftbox 刚进来我以为是直接给了shell,恐怖如斯. 随便扔了个命令,之后就没然后了,hhh,截包发现可能存在sql注入. 然后我就不会了... what i lea ...
- 关于 K210 MaixPy 的 I2C 读取设备,搜索不到设备,通信失败的一些原因以及解决方案。
近来对 amigo 开发期间的遇到 I2C 问题做一下总结. 我们发现有一些 I2C 设备搜索不到,主要原因是 DATA 的信号衰减,也可能是 I2C 的总线被拉住了. 软件层面的问题 例如在实现 A ...
- 00 你的第一个C语言程序
C语言简介 C 语言是一种通用的.面向过程式的计算机程序设计语言,即编程语言. 为移植和开发 UNIX 操作系统,丹尼斯·里奇于1972年在贝尔电话实验室设计开发了 C 语言的第一个版本. C 语言同 ...
- 独立看第一个C++程序到最终结果log----2019-04-16
(如果一个人夸你,千万别相信,一个人真优秀是不需要说出来的,所以别人夸你的时候也是自己最松懈的时候,千万不能飘,只能说明自己不是很差而已,世界上优秀的人很多,一直优秀到最后的人却是凤毛菱角. 如果一个 ...
- const放在函数前后的区别
转载:const放在函数前后的区别 一.const修饰指针 int b = 500; 1.const int * a = & b; 2.int const * a = & b; 3.i ...