tinydate.js[v0.3] 新增了字符串格式化为日期对象的函数

更新说明

  1. 加入了String类型的扩展成员 convertToDate() 可以直接将 字符串格式的日期转换为Date对象。
  2. 加入了String类型的扩展成员 convertToTimeSpan() 可以将 字符串格式的日期转换为TimeSpan对象。
  3. 修复了日期格式化为字符串的format函数中的bug。

tinydate.js v0.3

Date.prototype.format = function (fmt) {var o = {"M+": this.getMonth() + 1,                 //月份 "d+": this.getDate(),                    //日 "H+": this.getHours(),                   //小时 "m+": this.getMinutes(),                 //分 "s+": this.getSeconds(),                 //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "f+": this.getMilliseconds()             //毫秒 };if (/(y+)/.test(fmt)) {fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));}for (var k in o) {if (new RegExp("(" + k + ")").test(fmt)) {fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));}}return fmt;
}
//当前完整时间
Date.$nowDate = new Date().format("yyyy-MM-dd HH:mm:ss.ffff");
//获取自定义格式的当前时间
Date.$now = function (fmt) {return new Date().format(fmt);
}
//计算时间差
Date.diff = function (sDate, eDate) {if (eDate == undefined || eDate == null)eDate = new Date();var stime = sDate.getTime();var etime = eDate.getTime();var diffTime = etime - stime;var timeSpan = new TimeSpan(diffTime);return timeSpan;
}
//添加年
Date.prototype.addYear = function (number) {this.setFullYear(this.getFullYear() + number);
}
//添加月
Date.prototype.addMonth = function (number){this.setMonth(this.getMonth()+number);
}
//添加日
Date.prototype.addDate = function (number){this.setDate(this.getDate()+number);
}
//添加小时
Date.prototype.addHours = function (number){this.setHours(this.getHours()+number);
}
//添加分
Date.prototype.addMinutes = function (number){this.setMinutes(this.getMinutes()+number);
}
//添加秒
Date.prototype.addSeconds = function (number){this.setSeconds(this.getSeconds()+number);
}
//添加毫秒
Date.prototype.addMilliseconds = function (number){this.setMilliseconds(this.getMilliseconds()+number);
}//获得一年中第一天的日期
Date.prototype.getTheFirstDateOfTheYear = function (date) {var year, month=0, day=1;if (date == undefined || date == null) {year = this.getFullYear();}else {year = date.getFullYear();}return new Date(year, month, day);
}
//获得一年中最后一天的日期
Date.prototype.getTheLastDateOfTheYear = function (date) {var year, month = 11, day = 31;if (date == undefined || date == null) {year = this.getFullYear();}else {year = date.getFullYear();}return new Date(year, month, day);
}
//格式化当前日期 为 时限对象
Date.prototype.timeSpan = function () {return new TimeSpan(this);
}
//时限对象
function TimeSpan() {var o = new Object();o.year = 0;//年o.month = 0;//月o.day = 0;//日o.hours = 0;//时o.minutes = 0;//分o.seconds = 0;//秒o.milliseconds = 0;//毫秒o.totalYear = 0.00;//从时间原点的年o.totalMonth = 0.00;//从时间原点到现在的月o.totalDay = 0.00;//从时间原点到现在的天o.totalHours = 0.00;//从时间原点到现在的小时o.totalMinutes = 0.00;//从时间原点到现在的分o.totalSeconds = 0.00;//从时间原点到现在的秒o.totalMilliseconds = 0.00;//从时间原点到现在的毫秒//初始化对象o.init = function (timestamp) {var odate = new Date(timestamp);o.year = odate.getFullYear();o.month = odate.getMonth() + 1;o.day = odate.getDate();o.hours = odate.getHours();o.minutes = odate.getMinutes();o.seconds = odate.getSeconds();o.milliseconds = odate.getMilliseconds();o.totalMilliseconds = timestamp;o.totalSeconds = (timestamp / 1000).toFixed(2);o.totalMinutes = (timestamp / 1000 / 60).toFixed(2);o.totalHours = (timestamp / 1000 / 60 / 60).toFixed(2);o.totalDay = (timestamp / 1000 / 60 / 60 / 24).toFixed(2);o.totalMonth = o.year * 12;o.totalYear = o.year;}//无参则返回空对象if (arguments.length == 0) {}else if (typeof (arguments[0]) === "string") {o.init(new Date(arguments[0]));}else if (typeof (arguments[0]) === "number") {o.init(arguments[0]);} else if (typeof(arguments[0]) === "object") {o.init(arguments[0]);}return o;
}//字符串转换为Date
String.prototype.convertToDate = function () {return new Date(Date.parse(this.replace(/-/g, "/")));
}//字符串转换为TimeSpan
String.prototype.convertToTimeSpan = function () {return new TimeSpan(new Date(Date.parse(this.replace(/-/g, "/"))));
}

点此下载: tinydate_0.3.js


转载于:https://www.cnblogs.com/nozer1993/p/9198941.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向对象方法学的四个要点

面向对象方法学的要点面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在…

学成在线--4.CMS页面管理开发(新增页面)

文章目录1.定义新增页面接口1)在model工程中定义响应模型2)在api工程中添加接口2.新增页面服务端开发1)Dao2)Service3)Controller3.新增页面前端开发1)创建page_add.vue2)配置路由3)…

嵌套For循环性能优化

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。1 案例描述某日,在JavaEye上看到一道面试题,题目是这样的:请对以下的代码进行优化 Java代码 for (int …

docker-ce安装

1、安装 sudo yum -y install docker 2、加入开机自启systemctl enable docker转载于:https://www.cnblogs.com/runnerjack/p/8618524.html

python-study-17

复习 上节课复习1、什么是模块模块是一系列功能的集合体2、为何用模块拿来(内置或第三方的模块)主义,提升开发效率自定义模块可以让程序的各部分组件重用模块内的功能3、如何用模块大前提:模块是被执行文件导入使用,模…

面向对象方法学的优点

1.与人类习惯的思维方法一致面向对象的软件技术以对象为核心,用这种技术开发出的软件系统由对象组成。对象是由描述内部状态表示静态属性的数据,以及可以对这些数据施加的操作(对象的动态行为),封装在一起所构成的统一体。面向对象的设计方法…

如何学好C语言

我相信,这可能是很多朋友的问题,我以前也有这样的感觉,编程编到一定的时候,发现能力到了瓶颈,既不深,也不扎实,半吊子。比如:你长期地使用Java和.NET ,这些有虚拟机的语言…

学成在线--5.CMS页面管理开发(修改页面)

文章目录1.修改页面流程1)前端逻辑2)后端逻辑2.修改页面接口定义3.后端开发--Dao4.后端开发--Service5.后端开发--Controller1)根据id查询页面2)保存页面信息6.前端开发--页面处理流程7.前端开发--编写page_edit.vue8.前端开发--配…

在树莓派上播放音频

https://blog.csdn.net/qinxiandiqi/article/details/39155593转载于:https://www.cnblogs.com/Baronboy/p/9206164.html

Map四种获取key和value值的方法,以及对map中的元素排序

2019独角兽企业重金招聘Python工程师标准>>> 获取map的值主要有四种方法,这四种方法又分为两类: 一类是调用map.keySet()方法来获取key和value的值, 另一类则是通过map.entrySet()方法来取值, 两者的区别在于,前者主要…

配置Oracle Instant Client环境

1.配置Oracle Instant Client环境 到Oracle官网下载Oracle Instant Client,注意选择x86平台,Toad只认32位的Oracle Instant Client。至于版本号,没有特别要求,版本向下兼容。 桌面上,右键点“我的电脑”,选…

学成在线--6.CMS页面管理开发(删除页面)

文章目录0.删除用户逻辑1.删除页面接口定义2.后端开发--Dao3.后端开发--Service4.后端开发--controller5.前端开发--page_list.vue添加删除按钮6.前端开发--page_list.vue编写删除事件7.后端开发--Api方法定义Api方法0.删除用户逻辑 1)前端逻辑 (1&…

诺基亚是“不跟随”还是跟不上?

在Android和iPhone为主流的环境下,诺基亚用“不跟随”的口号表明自己欲保持个性,但是否也意味着其固步自封,跟不上时代? 5年市值缩水超900亿欧元,全球业绩连续4个季度亏损,更为可怕的是,被视为…

HTTP 协议(详解)

HTTP协议简介:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(www.world wide web)服务器与本地浏览器之间传输文本的传输协议。 http请求协议与相应协议HTTP协议包含浏览器发送数据到服务器需要遵循…

对象的特点

对象有如下一些基本特点。(1) 以数据为中心。操作围绕对其数据所需要做的处理来设置,不设置与这些数据无关的操作,而且操作的结果往往与当时所处的状态 (数据的值)有关。 (2) 对象是主动的。它是进行处理的主体。不能从外部直接加工它的私有数据&a…

React Native集成Redux框架讲解与应用

学过React Native的都知道,RN的UI是根据相应组件的state进行render的,而页面又是由大大小小的组件构成,导致每个组件都必须维护自身的一套状态,因此当页面复杂化的时候,管理state会相当吃力的。而redux提供了一套机制来…

【笔试记录】2021/3/10阿里

阿里20210310春招笔试记录-Python解题 第一题 问题描述: 小偷从出发点按指定方向出发,除非遇到墙或超出城市必须转方向,不然只能直走。城市大小m*n。输入描述: 1. 第1行,三个数字m n k;m*n表示城市大小&…

Spring mvc中@RequestMapping 6个基本用法小结

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 小结下spring mvc中的RequestMapping的用法。 1)最基本的,方法级别上应用,例如: …

学成在线--7.CMS页面管理开发(异常处理)

文章目录1.异常处理的问题分析2.异常处理流程3.可预知异常处理1.自定义异常类2.异常抛出类3.异常捕获类4.异常处理测试1)定义错误代码2)异常处理测试4.不可预知异常处理1.定义异常捕获方法1)异常抛出测试2)异常捕获方法1.异常处理…

函数重载与运算符重载

有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型…