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(); //得到毫秒数 大多数是用毫秒数除 ...
随机推荐
- 在IE8等不支持placeholder属性的浏览器中模拟placeholder效果
placeholder是一个很有用的属性,可以提示用户在input框中输入正确的内容,但是IE8以及IE8一下的浏览器不支持该属性,我们可以使用js来模拟相似的效果.下面直接上代码: <!doc ...
- Centos7 配置网络步奏详解
Centos7 配置网络步奏详解 编辑网卡配置文件 vi /etc/sysconfig/network-script/ifcfg-ens01 备注:这里的ens01不是所有系统都叫这个,有的可能叫其他 ...
- css shorthand属性简写
一.什么是shorthand 属性简写(shorthand)就是一次性声明一组相关的属性.好处呢当然是众所周知的,让css从臃肿无序升级为简洁有效具有高可读性. 大多数的人都使用属性简写,我也用,但是 ...
- nopcommerce之权限模块
这篇文章简单介绍一下nopcommerce的权限模块,nopcommerce里面的权限设计相对比较简单,主要针对后台的action和前台的是否显示(比如产品.品牌等),虽然简单但是应付一般的项目应该没 ...
- LeetCode题解-----First Missing Positive
Given an unsorted integer array, find the first missing positive integer. For example,Given [1,2,0] ...
- 分享用于学习C++图像处理的代码示例
为了便于学习图像处理并研究图像算法, 俺写了一个适合初学者学习的小小框架. 麻雀虽小五脏俱全. 采用的加解码库:stb_image 官方:http://nothings.org/ stb_image. ...
- 来说说SpringMVC + JSONP的跨域请求
先来说说场景,JSON,这货大家应该都懂,不懂的请自动面壁思过,那么什么是JSONP,不是JSON放了个P就叫JSONP,而是JSON with Padding,在进行跨域请求的时候需要的数据,什么是 ...
- JavaEE
1. 为什么需要JavaEE 我们编写的JSP代码中,由于大量的显示代码和业务逻辑混淆在一起,彼此嵌套,不利于程序的维护和扩展.当业务需求发生变化的时候,对于程序员和美工都是一个很重的负担. 为了程 ...
- java 12-5 StringBuffer的几个案例
1. 把数组拼接成一个字符串 public class StringBufferTest2 { public static void main(String[] args) { //定义一个数组 in ...
- Redis集群环境的部署记录
Redis Cluster终于出了Stable,这让人很是激动,等Stable很久了,所以还是先玩玩. 一. 集群简单概念. Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施( ...