Javascript日期时间总结
写这篇文章,总结一下前端JavaScript遇到的时间格式处理。
从后台返回的C#时间为:/Date(-62135596800000)/,这个是C#的DateTime.MinValue; 要在html页面展示,一个方法是后端先处理成yyyy-MM-dd HH:mm:ss的格式,前端直接展示。 如果后端不做处理,就需要前端来做处理了,下面就是看前端处理的这种情况。
代码如下:
// 说明:将C#时间戳,格式为:/Date(-62135596800000),转换为js时间。
// 参数:timeSpan 字符串 例如:'/Date(-62135596800000)'
// 结果:JS的Date
var parseDate = function(timeSpan)
{
var timeSpan = timeSpan.replace('Date','').replace('(','').replace(')','').replace(/\//g,'');
var d = new Date(parseInt(timeSpan));
return d;
};
代码如下:
// 说明:JS时间Date格式化参数
// 参数:格式化字符串如:'yyyy-MM-dd HH:mm:ss'
// 结果:如2016-06-01 10:09:00
Date.prototype.Format = function (fmt) { //author: meizz
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),
"S": this.getMilliseconds()
};
var year = this.getFullYear();
var yearstr = year + '';
yearstr = yearstr.length >= 4 ? yearstr : '0000'.substr(0, 4 - yearstr.length) + yearstr; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (yearstr + "").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;
}
代码如下:
// 说明:转换js的Date为:
// 参数:JS的的Date
// 返回:例如:1993年02月08日 转换后为 08FEB93
var parseDateStr = function(d)
{
var array = d.toDateString().split(' ');
var str = array[2]+array[1]+array[3].substr(2,2);
return str.toUpperCase()
}
如图所示:

代码如下:
// 说明:两个时间相减
// 参数:JS的Date类型,或者 string 类型,格式为:yyyy-MM-dd HH:mm:ss
// 返回: date1-date2的秒数
var substractDate = function(date1, date2){
var type1 = typeof date1;
var type2 = typeof date2;
if (type1 == 'string')
{
date1 = new Date(date1);
}
if (type2 == 'string')
{
date2 = new Date(date2);
}
return (date1 - date2) / 1000;
}
测试结果,如图所示:

两个日期相差的月份,不能简单的以1个月有多少天来计算,因为有的月份有30天,有的有31天。所以是下面这种计算方式。相差的年份的计算可以参考下面这种方式。
代码如下:
var getDiffMonths = function(date1, date2)
{
if (!date1 instanceof Date){
console.error('param date1 is not Date');
}
if (!date2 instanceof Date){
console.error('param date2 is not Date');
}
var months1 = date1.getFullYear() * 12 + date1.getMonth();
var months2 = date2.getFullYear() * 12 + date2.getMonth();
return months1 - months2;
}
测试结果,如图所示:

代码如下:
// 说明:添加天数
// 参数:天数 比如40天
// 结果:比如日期:2016-16-13,加40天,结果为:2016-07-23
Date.prototype.addDays = function(days)
{
var date = new Date(this);
date.setDate(date.getDate() + days);
return date;
}
Javascript日期时间总结的更多相关文章
- JavaScript日期时间格式化函数
这篇文章主要介绍了JavaScript日期时间格式化函数分享,需要的朋友可以参考下 这个函数经常用到,分享给大家. 函数代码: //格式化参数说明: //y:年,M:月,d:日,h:时,m分,s:秒, ...
- Javascript 日期时间格式正则
因为Javascript的日期格式判断可能因浏览器的版本有所不同,所以用正则判断会比较好,这里备注一个正则用来判断日期时间的格式: ^(?=\d)(?:(?!(?:1582(?:\.|-|\/)10( ...
- JavaScript日期时间操作
<script> var d=new Date();//当前时间 alert(d); var d1=new Date(1992,5,19);//定义一个时间,月份要加1; alert(d1 ...
- Javascript 日期时间超强正则表达式
var reg = /^([0-9]{4})-((?:0[1-9]|[1-9]|1[1-2]))-((?:(?:0[1-9]|[1-9])|1[0-9]|2[0-9]|3[0-1]))$|^([0-9 ...
- javascript日期时间操作库推荐
https://github.com/datejs/Datejs 链接: https://pan.baidu.com/s/1QTGhxslarNyW_0kB6gyJYA 提取码: ibab 如果这篇文 ...
- javascript两行代码按指定格式输出日期时间
javascript两行代码按指定格式输出日期时间,具体看代码: function date2str(x,y) { var z ={y:x.getFullYear(),M:x.getMonth()+1 ...
- JavaScript 日期和时间基础知识
前言 学习Date对象之前,首先要先了解关于日期和时间的一些知识.比如,闰年.UTC等等.深入了解这些,有助于更好地理解javascript中的Date对象. 标准时间 一般而言的标准时间是指GMT和 ...
- JavaScript 对时间日期格式化
JavaScript 对时间日期格式化 // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位 ...
- javascript 毫秒转日期 日期时间转毫秒
js毫秒时间转换成日期时间 var oldTime = (new Date("2011/11/11 20:10:10")).getTime(); //得到毫秒数 大多数是用毫秒数除 ...
随机推荐
- 《SQL Server企业级平台管理实践》读书笔记——几个系统库的备份与恢复
master数据库 master作为数据库的主要数据库,记录着SQL Server系统的所有系统级信息,例如登录用户.系统配置设置.端点和凭证以及访问其他数据服务器所需要的信息.master数据库还记 ...
- POJ 1961 Period( KMP )*
Period Time Limit: 3000MSMemory Limit: 30000K Total Submissions: 12089Accepted: 5656 Description For ...
- OpenStack虚拟机状态
OpenStack创建一个虚拟机,涉及到三种状态,vm_state,task_state和power_state. 先总结几点: 电源状态(power_state):是hypervisor的状态,从计 ...
- 对于大学4年的反思(续),记我的ThoughtWorks面试
之前我写了一篇对于大学四年的反思,时隔一个月,为什么我这么快就要来写这篇续章呢?主要有两个原因,第一是感谢静子姐姐,记得知乎上有个回答里面说过人生需要有贵人的帮助,遇到贵人是一件很幸运的事情.我想,静 ...
- 怎样绘制ZBrush中的纹理
利用ZBrush的内置插件“投影大师”和“Polypainting”纹理贴图能够快速实现纹理的绘制.本文将对这两种方法的应用流程做一个介绍. 查看跟多内容请直接前往:http://www.zbrush ...
- HDU 4819 Mosaic --二维线段树(树套树)
题意: 给一个矩阵,每次查询一个子矩阵内的最大最小值,然后更新子矩阵中心点为(Max+Min)/2. 解法: 由于是矩阵,且要求区间最大最小和更新单点,很容易想到二维的线段树,可是因为之前没写过二维的 ...
- UVALive 6092 Catching Shade in Flatland --枚举+几何计算
题意:x=[-200,200],y=[-200,200]的平面,一天中太阳从不同角度射到长椅(原点(0,0))上,有一些树(用圆表示),问哪个时刻(分钟为单位)太阳光线与这些圆所交的弦长总和最长.太阳 ...
- Android网络之数据解析----SAX方式解析XML数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- IL查看override
查看override的IL Override示例 下面我们看一个Override的Example namespace MyCollection { public class MyBase { publ ...
- StackBlur.js
StackBlur.js 是 Mario Klingemann 创建的一个快速的.接近高斯模糊的效果库. 更多信息: http://incubator.quasimondo.com/processin ...