分享人:周倩宇
1. JS求时间差
网址:http://www.cnblogs.com/cm490893449/archive/2010/10/26/1861230.html
var date1=new Date(); //开始时间
alert("aa");
var date2=new Date(); //结束时间
var date3=date2.getTime()-date1.getTime() //时间差的毫秒数
//计算出相差天数
var days=Math.floor(date3/(24*3600*1000))
//计算出小时数
var leave1=date3%(24*3600*1000) //计算天数后剩余的毫秒数
var hours=Math.floor(leave1/(3600*1000))
//计算相差分钟数
var leave2=leave1%(3600*1000) //计算小时数后剩余的毫秒数
var minutes=Math.floor(leave2/(60*1000))
//计算相差秒数
var leave3=leave2%(60*1000) //计算分钟数后剩余的毫秒数
var seconds=Math.round(leave3/1000)
alert(" 相差 "+days+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒")
2. JS日期格式化转换方法
网址:http://www.cnblogs.com/tugenhua0707/p/3776808.html
-
将日期转换为指定的格式:比如转换成 年月日时分秒 这种格式:yyyy-MM-dd hh:mm:ss 或者 yyyy-MM-dd。
可以为Date原型添加如下的方法:
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), //季度
"S" : 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;
}
比如我们可以这样调用下:
var time1 = new Date().format("yyyy-MM-dd hh:mm:ss");console.log(time1);
运行如下:
也可以转换成 ”年月日”的格式
var time2 = new Date().format("yyyy-MM-dd");console.log(time2);
运行如下:
-
将指定的日期转换为"年月日"的格式,代码如下:
var oldTime = (new Date("2012/12/25 20:11:11")).getTime();
var curTime = new Date(oldTime).format("yyyy-MM-dd");
console.log(curTime);
运行如下:
-
将 "时间戳" 转换为 "年月日" 的格式.
比如如下代码:
var da = 1402233166999;
da = new Date(da);
var year = da.getFullYear()+'年';
var month = da.getMonth()+1+'月';
var date = da.getDate()+'日';
console.log([year,month,date].join('-'));
运行如下:
3. JS获取url中参数值QueryString()
网址:http://www.jb51.net/article/94448.htm
获取url的querystring参数
获取url的querystring参数的两种方法如下:
-
方法一:正则匹配
//获取url中的参数
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", i); // 匹配目标参数
var result = window.location.search.substr(1).match(reg); // 对querystring匹配目标参数
if (result != null) {
return decodeURIComponent(result[2]);
} else {
return null;
}
}
对于http://localhost/index.html?q1=abc&q2=efg&q3=h
的url,获取 q1 参数值的方法如下:
var q1 = getQueryString('q1'); // abc
-
方法二:split
function getQueryString() {
var qs = location.search.substr(1), // 获取url中"?"符后的字串
args = {}, // 保存参数数据的对象
items = qs.length ? qs.split("&") : [], // 取得每一个参数项,
item = null,
len = items.length;
for(var i = 0; i < len; i++) {
item = items[i].split("=");
var name = decodeURIComponent(item[0]),
value = decodeURIComponent(item[1]);
if(name) {
args[name] = value;
}
}
return args;
}
对于http://localhost/index.html?q1=abc&q2=efg&q3=h
的url,获取 q1 参数值的方法如下:
var qs = getQueryString();
var q1 = qs["q1"]; // abc
用上面两种getQueryString()方法都能很好地解决获取url的querystring参数问题。就此顺便整理一下Location对象,方便日后学习参考。详情看上面网址。
4. 日期为1900-01-01时,不显示
var date1 = (new Date(data.date)).getTime();
var date2 = new Date(date1).format("yyyy-MM-dd");
console.log(date2 );
if (!RegExp("1900").test(date2 )) {
$("#date2 ").append(date2 );
} else {
$("#date2 ").append("");
}
5. SQL中的关联查询
表1 | name | sex |
---|---|---|
表2 | name | age |
表3 | name | age |
表一中name如果在表二中则用表二age的数据,在表三中则用表三age的数据:
select case
when t2.name is not null then t2.age
when t3.name is not null then t3.age as age
from t1 left join t2 on t2.name =t1.name
left join t3 on t3.name =t1.name ;
附:SQL中CASE关键字的使用:http://blog.csdn.net/wuzuodingfeng/article/details/53523176
从多个表中查数据到一个视图中
select Tid,
PmSupplyCDCNo,
PmSupplyName,
(select psri.PsriSupplyTypeInAssess
from PmSupplyReportInfo psri
where psb.Tid = psri.PsriRefTid) as PsriSupplyTypeInAssess,
PmSupplyAdress,
(select psac.PsacProjectType
from PmSupplyAuthorContent psac
where psb.Tid = psac.PsacRefTid) as PsacProjectType,
(select psac.PsacConclusion
from PmSupplyAuthorContent psac
where psb.Tid = psac.PsacRefTid) as PsacConclusion,
PmSupplyContactPTel,
PmSupplyContactPEmail,
(select pscr.PscrOpraDate
from PmSupplyCommentRecord pscr
where pscr.PscrPsNextStepFlag = '1201'
and pscr.PscrPrevOrNext = '101'
and psb.Tid = PscrRefPsbiTid) as PscrOpraDate,
(select CONVERT(varchar(100),
SUBSTRING(psac.PsacConclusion,
CHARINDEX(':', psac.PsacConclusion) + 1,
DATALENGTH(psac.PsacConclusion)),
23) as PscrOpraDate
from PmSupplyAuthorContent psac
where isdate(SUBSTRING(psac.PsacConclusion,
CHARINDEX(':', psac.PsacConclusion) + 1,--CHARINDEX返回“:”在psac.PsacConclusion中索引,若不存在,则返回0
DATALENGTH(psac.PsacConclusion))) = 1--DATALENGTH返回用于表示任何表达式的字节数。
and psac.PsacRefTid = psb.Tid
union all (select dateadd(year, 2, pscr.PscrOpraDate)
from PmSupplyCommentRecord pscr,
PmSupplyAuthorContent psac
where pscr.PscrPsNextStepFlag = '1201'
and pscr.PscrPrevOrNext = '101'
and psb.Tid = pscr.PscrRefPsbiTid
and isdate(SUBSTRING(psac.PsacConclusion,
CHARINDEX(':', psac.PsacConclusion) + 1,
DATALENGTH(psac.PsacConclusion))) = 0--isdate判断该数据是否是日期
and psac.PsacRefTid = psb.Tid)) as PscrExpiryDate,
(SELECT SUBSTRING(psac.PsacConclusion, CHARINDEX(':', psac.PsacConclusion) + 1, DATALENGTH(psac.PsacConclusion)) AS bz
FROM PmSupplyBaseInfo psb, PmSupplyAuthorContent psac
WHERE isdate(SUBSTRING(psac.PsacConclusion, CHARINDEX(':', psac.PsacConclusion) + 1, DATALENGTH(psac.PsacConclusion))) = 0
AND CHARINDEX(':', psac.PsacConclusion) = 0
AND psac.PsacRefTid = psb.Tid) as bz ,
PmSupplyStatus
from PmSupplyBaseInfo psb
where psb.PmSupplyStatus in ('1201', '1301', '1401')
6. jquery中append、prepend, before和after方法的区别
网址:http://blog.csdn.net/yexudengzhidao/article/details/54709224
-
append()和prepend()
假设
<div class='a'> //<---you want div c to append in this
<div class='b'>b</div>
</div>
使用
$('.a').append($('.c'));
效果如下:
<div class='a'> //<---you want div c to append in this
<div class='b'>b</div>
<div class='c'>c</div>
</div>
同样使用
$('.a').prepend($('.c'));
效果如下:
<div class='a'> //<---you want div c to append in this
<div class='c'>c</div>
<div class='b'>b</div>
</div>
-
使用after()和before()
同样使用假设代码:
$('.a').after($('.c'));
效果如下:
<div class='a'>
<div class='b'>b</div>
</div>
<div class='c'>c</div>
同样使用before()
$('.a').before($('.c'));
效果如下:
<div class='c'>c</div>
<div class='a'>
<div class='b'>b</div>
</div>
总结:
append() & prepend()是在元素内插入内容(该内容变成该元素的子元素或节点),after() & before()是在元素的外面插入内容(其内容变成元素的兄弟节点)。