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文件.可选的任何需要的其他文件,例如图片:在开发应用(扩展)时 ...
随机推荐
- 分别用canvas和css3的transform做出钟表的效果
两种方式实际上在js上的原理都是一样的.都是获取时间对象,再获取时间对象的时分秒,时分秒乘以其旋转一刻度(一秒.一分.一小时)对应的角度.css3中要赋值于transform:rotate(角度),c ...
- 初识ABP vNext(10):ABP设置管理
Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 目录 前言 开始 定义设置 使用设置 最后 前言 上一篇介绍了ABP模块化开发的基本步骤,完成了一个简单的文件上传功能.通常的模块都有一 ...
- 虚拟机Ubuntu(18.04.2)下安装配置Hadoop(2.9.2)(伪分布式+Java8)
[本文结构] [1]安装Hadoop前的准备工作 [1.1] 创建新用户 [1.2] 更新APT [1.3] 安装SSH [1.4] 安装Java环境 [2]安装和配置hadoop [2.1] Had ...
- Oracle12c 使用总结
/*创建临时表空间 */create temporary tablespace BBB tempfile 'D:\APP\oracle\oradata\orcl\BBB.dbf' size 500m ...
- Java单播、组播(多播)、广播的简单实现
简介 单播有TCP和UDP两种实现,组播(多播)和广播只有UDP一种实现.单播和广播基本一样,只是广播的数据包IP为广播IP. 单播 DatagramSocket和DatagramPacket 服 ...
- 1.变量:var,let,const
var在ECMAScript的所有版本中都可以使用,而const和let只能在ES6及更晚的版本中使用. var,let,const三个关键字的区别 var: 1)声明作用域:在函数内部,使用var定 ...
- JDK1.8新特性之(二)--方法引用
在上一篇文章中我们介绍了JDK1.8的新特性有以下几项. 1.Lambda表达式 2.方法引用 3.函数式接口 4.默认方法 5.Stream 6.Optional类 7.Nashorm javasc ...
- K-DTree入门
\(K-D Tree\),一种用来维护\(K\)维数据的数据结构.常用于维护各种高维的数据,或者是邻近搜索等.从另一种意义上说,实际上就是高维的二叉搜索树.对于一些常见的问题,如\(k\)远点对.三位 ...
- Centos 6.9安装 php5.6 过程中报错:Error: Package: php56w-mcrypt-5.6.40-1.w6.x86_64 (webtatic)
在 CentOS 6.9 系统下安装 php 5.6 的过程中,执行如下命令: yum -y install php56w-pdo php56w-xml php56w-gd php56w-gd.x86 ...
- ubuntu20 使用命令安装 redis
安装 redis sudo apt-get install redis-server -y 配置文件 vi /etc/redis/redis.conf # 设置端口 port # 设置密码 requi ...