最近经常用到js的日期时间,遇到了几种问题,参考别人的代码整理了一下:
一:比较两个日期的相差天数
<script language="JavaScript">
//计算天数差的函数,通用
function DateDiff(sDate1,sDate2){ //sDate1和sDate2是2002-12-18格式
var aDate, oDate1, oDate2, iDays ;
aDate = sDate1.split("-") ;
oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]) ;//转换为12-18-2002格式
aDate = sDate2.split("-") ;
oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]);
iDays = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60 /24) ;//把相差的毫秒数转换为天数
return iDays ;
}
function getNumber(){
var date1="2011-07-19";
var date2="2011-08-09";
var number=DateDiff(date1,date2);
alert(number>0?number:-number);
}
</script>
二:时间转换
1,时间字符串转换成date
<1>
var strArray=str.split(" ");
var strDate=strArray[0].split("-");
var strTime=strArray[1].split(":");
var a=new Date(strDate[0],(strDate[1]-parseInt(1)),strDate[2],strTime[0],strTime[1],strTime[2])
<2>
var s = "2005-12-15 09:41:30";
var d = new Date(Date.parse(s.replace(/-/g, "/")));
三:时间格式化
//时间格式转换方法
function getFormat(time,format){
Date.prototype.format = function(format){
var o = {
"M+" : this.getMonth()+1, //month
"d+" : this.getDate(), //day
"h+" : this.getHours(), //hour
"m+" : this.getMinutes(), //minute
"s+" : this.getSeconds(), //second
"q+" : Math.floor((this.getMonth()+3)/3), //quarter
"S" : this.getMilliseconds() //millisecond
}
if(/(y+)/.test(format))
format=format.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(format))
format=format.replace(RegExp.$1,RegExp.$1.length==1?o[k]:("00"+o[k]).substr((""+o[k]).length));
return format;
}
var thisDate=time.format(format);
return thisDate;
}
//调用
var newtime=getFormat(new Date(),"yyyy/MM/dd HH:mm");
var newtime1=getFormat(new Date(),"yyyy-MM-dd HH:mm");
var newtime2=getFormat(new Date(),"yyyy-MM-dd");
var newtime3=getFormat(new Date(),"hh:mm");
像这样想转什么格式就转什么格式
四:上下翻星期
//在页面上得到checktime,注意checktime是动态
<%
String checktime=HttpUtil.getString(request,"checktime","");
if(checktime==null)
{
checktime="";
}
Long timestamp=new Date().getTime();
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy/MM/dd");
if(!checktime.equals(""))
{
timestamp=dateFormat.parse(checktime).getTime();
}
%>
<script>
//得到下限天或者按‘上一周‘按钮时得到其下限时间
function getdownday(num){
//得到当天日期
var dtime=new Date();
dtime.setTime(<%=timestamp%>);
dtime.setDate(dtime.getDate()-(dtime.getDay()-1)-num);
//得到下限时间或者上一周的下限时间
var downtime=dtime.getFullYear()+"/"+(dtime.getMonth()+1)+"/"+dtime.getDate();
return downtime;
}
//得到上限天或者按‘下一周’按钮得到其下限时间
function getupday(num){
var dtime=new Date();
dtime.setTime(<%=timestamp%>);
var d=dtime.getDay();
dtime.setDate(dtime.getDate()+(7-d)+num);
//得到上限时间或者下一周的下限时间
var uptime=dtime.getFullYear()+"/"+(dtime.getMonth()+1)+"/"+dtime.getDate();
return uptime;
}
</script>
html:
<input type="button“ value