`
guy19867
  • 浏览: 88446 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

JS日期操作

阅读更多

//日期自动补零程序
function appendZero(n)
{
return(("00"+ n).substr(("00"+ n).length-2));
}
//获得当年当月最大天数
function GetMonthMaxDay(theYear,theMonth){ 
var theDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var theMonthDay = 0, tmpYear = this.formatYear(theYear);
theMonthDay = theDays[theMonth];
if (theMonth == 1){ //theMonth is February
if (((tmpYear % 4 == 0) && (tmpYear % 100 != 0)) || (tmpYear % 400 == 0)){
theMonthDay++;
}
}
return(theMonthDay);
}
//把年份格式化成4位
function formatYear(theYear){ 
var tmpYear = parseInt(theYear,10);
if (tmpYear < 100){
tmpYear += 1900;
if (tmpYear < 1940){
tmpYear += 100;
}
}
if (tmpYear < this.MinYear){
tmpYear = this.MinYear;
}
if (tmpYear > this.MaxYear){
tmpYear = this.MaxYear;
}
return(tmpYear);
}
//对javascript日期进行格式化
//formattype是返回的时间类型
//返回:返回时间串
function formatDate(day,formattype){
var dateString = "";

var thisyear = formatYear(day.getFullYear());
var thismonth = appendZero(day.getMonth()+1);
var thisday = appendZero(day.getDate());
var thishour = appendZero(day.getHours());
var thismin  = appendZero(day.getMinutes());
var thissec  = appendZero(day.getSeconds());
switch (formattype){
case 0:
dateString = thisyear + "年" + thismonth + "月" + thisday + "日";
break;
case 1:
dateString = thisyear + "-" + thismonth + "-" + thisday;
break;
case 2:
dateString = thisyear + "-" + thismonth + "-" + thisday+ " " + appendZero(thishour) + ":" + appendZero(thismin) + ":" + appendZero(thissec);
break;
default:
dateString = thisyear + "-" + thismonth + "-" + thisday;
}
return dateString;
}
//取得本周第一天
function getWeekFirstDay(formattype)
{
var Nowdate=new Date();
var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);
return formatDate(WeekFirstDay,formattype);
}
//取得本周第七天
function getWeekLastDay(formattype)
{
var Nowdate=new Date();
var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);
var WeekLastDay=new Date((WeekFirstDay/1000+6*86400)*1000);
return formatDate(WeekLastDay,formattype);
}
function testDate() {
var Nowdate=new Date();
//本月
var MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth(),1);
alert(MonthFirstDay.getFullYear())
alert(appendZero(MonthFirstDay.getMonth()+1))
//上月
var lastMonth = new Date(Nowdate.getFullYear(),Nowdate.getMonth()-1,1);
alert(lastMonth.getFullYear())
alert(appendZero(lastMonth.getMonth()+1))


}
//取得本月第一天
function getMonthFirstDay(formattype)
{
var Nowdate=new Date();
var MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth(),1);
return formatDate(MonthFirstDay,formattype);
}
//取得本月最后一天
function getMonthLastDay(formattype)
{
var Nowdate=new Date();
var MonthNextFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth()+1,1);
var MonthLastDay=new Date(MonthNextFirstDay-86400000);
return formatDate(MonthLastDay,formattype);
}
function getDateFromString(strDate){

var arrYmd = strDate.split("-");
for(var i=0;i<arrYmd.length;i++){
if(arrYmd[i].length>1 && arrYmd[i].indexOf("0")==0)
arrYmd[i]= arrYmd[i].substring(1);
}
var numYear = parseInt(arrYmd[0]);
var numMonth = parseInt(arrYmd[1]) - 1;
var numDay = parseInt(arrYmd[2]);
return new Date(numYear, numMonth, numDay);
}
/*
下列函数返回需要的时间 偏移值不能大于30
参数:dadd是日偏移值,-表示向前推,+向后推
formattype是返回的时间类型
返回:返回时间串
*/
function getDiffDate(dadd,formattype)
{
//可以加上错误处理
var a = new Date();
a = a.valueOf();
a = a + dadd * 24 * 60 * 60 * 1000;
a = new Date(a);
return formatDate(a,formattype);
}

//getDiffDate(+2,0)

//取得指定日期的年月日时分秒
//参数:dateValue 是格式形如:2007/04/05
function TimeCom(dateValue){
var newCom = new Date(dateValue);
this.year = newCom.getFullYear();
this.month = newCom.getMonth()+1;
this.day = newCom.getDate();
this.hour = newCom.getHours();
this.minute = newCom.getMinutes();
this.second = newCom.getSeconds();
this.msecond = newCom.getMilliseconds();
this.week = newCom.getDay();
}

//取得两个日期之间的时间差
//参数:interval : y或year-表示取得相差的年份 n或month-表示相差的月份 d或day表示相差的天数 h或hour-表示相差的小时 m或minute-表示相差的分钟 s或second-表示相差的秒数 ms或msecond-表示相差的毫秒数 w或week-表示相差的周数
//      date1:起始日期
//      date2:结束日期
function DateDiff(interval,date1,date2)
{
var TimeCom1 = new TimeCom(date1);
var TimeCom2 = new TimeCom(date2);
var result;
switch(String(interval).toLowerCase())
{
case "y":
case "year":
result = TimeCom1.year-TimeCom2.year;
break;
case "n":
case "month":
result = (TimeCom1.year-TimeCom2.year)*12+(TimeCom1.month-TimeCom2.month);
break;
case "d":
case "day":
result = Math.round((Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day)-Date.UTC(TimeCom2.year,TimeCom2.month-1,TimeCom2.day))/(1000*60*60*24));
break;
case "h":
case "hour":
result = Math.round((Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day,TimeCom1.hour)-Date.UTC(TimeCom2.year,TimeCom2.month-1,TimeCom2.day,TimeCom2.hour))/(1000*60*60));
break;
case "m":
case "minute":
result = Math.round((Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day,TimeCom1.hour,TimeCom1.minute)-Date.UTC(TimeCom2.year,TimeCom2.month-1,TimeCom2.day,TimeCom2.hour,TimeCom2.minute))/(1000*60));
break;
case "s":
case "second":
result = Math.round((Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day,TimeCom1.hour,TimeCom1.minute,TimeCom1.second)-Date.UTC(TimeCom2.year,TimeCom2.month-1,TimeCom2.day,TimeCom2.hour,TimeCom2.minute,TimeCom2.second))/1000);
break;
case "ms":
case "msecond":
result = Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day,TimeCom1.hour,TimeCom1.minute,TimeCom1.second,TimeCom1.msecond)-Date.UTC(TimeCom2.year,TimeCom2.month-1,TimeCom2.day,TimeCom2.hour,TimeCom2.minute,TimeCom2.second,TimeCom1.msecond);
break;
case "w":
case "week":
result = Math.round((Date.UTC(TimeCom1.year,TimeCom1.month-1,TimeCom1.day)-Date.UTC(TimeCom2.year,TimeCom2.month-1,TimeCom2.day))/(1000*60*60*24)) % 7;
break;
default:
result = "invalid";
}
return(result);
}
/*
下列函数返回需要的时间 偏移值不能大于30
参数:interval : y或year-表示取得相差的年份 n或month-表示相差的月份 d或day表示相差的天数 h或hour-表示相差的小时 m或minute-表示相差的分钟 s或second-表示相差的秒数 ms或msecond-表示相差的毫秒数 w或week-表示相差的周数
num是偏移值,-表示向前推,+向后推
dateValue 指定的日期
formattype是返回的时间类型
返回:返回时间串
*/
function DateAdd(interval,num,dateValue,formattype)
{
var newCom = new TimeCom(dateValue);
switch(String(interval).toLowerCase())
{
case "y": case "year": newCom.year += num; break;
case "n": case "month": newCom.month += num; break;
case "d": case "day": newCom.day += num; break;
case "h": case "hour": newCom.hour += num; break;
case "m": case "minute": newCom.minute += num; break;
case "s": case "second": newCom.second += num; break;  
case "ms": case "msecond": newCom.msecond += num; break;
case "w": case "week": newCom.day += num*7; break;
default: return("invalid");
}
var now = newCom.year+"/"+newCom.month+"/"+newCom.day+" "+newCom.hour+":"+newCom.minute+":"+newCom.second;
return formatDate(new Date(now),formattype);
}
//alert(DateAdd('d',-30,new Date(),0));
//取得当前日期
function getToDay(formattype){
var Nowdate=new Date();
M=Number(Nowdate.getMonth())+1;
Nowdate = new Date(Nowdate.getFullYear()+"/"+M+"/"+Nowdate.getDate());
return formatDate(Nowdate,formattype);
}
//上月第一天
function getPreviousFirstDay(formattype)
{
var Nowdate=new Date();
var MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth()-1,1);
return formatDate(MonthFirstDay,formattype);
}

//上月最后一天
function getPreviousLastDay(formattype)
{
var Nowdate=new Date();
var MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth(),1);
return formatDate(new Date(MonthFirstDay-86400000),formattype);
}
//上周第一天
function getPreviousFirstWeekDay(formattype)
{
var Nowdate=new Date();
var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);
WeekFirstDay=new Date(WeekFirstDay-86400000*7);
return formatDate(WeekFirstDay,formattype);
}
//上周最后一天
function showPreviousLastWeekDay(formattype)
{
var Nowdate=new Date();
var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);
WeekFirstDay = new Date(WeekFirstDay-86400000);
return formatDate(WeekFirstDay,formattype);
}
//上一天
function getPreviousDay(formattype)
{
var MonthFirstDay=new Date();
MonthFirstDay = new Date(MonthFirstDay-86400000);
return formatDate(MonthFirstDay,formattype);
}
//下一天
function getNextDay(formattype)
{
var MonthFirstDay=new Date();
MonthFirstDay = new Date((MonthFirstDay/1000+86400)*1000);
return formatDate(MonthFirstDay,formattype);
}
//下周第一天
function getNextFirstWeekDay(formattype)
{
var Nowdate=new Date();
var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);
var MonthFirstDay=new Date((WeekFirstDay/1000+6*86400)*1000);
MonthFirstDay=new Date((MonthFirstDay/1000+86400)*1000);
return formatDate(MonthFirstDay,formattype); 
}
//下周最后一天
function getNextLastWeekDay(formattype)
{
var Nowdate=new Date();
var WeekFirstDay=new Date(Nowdate-(Nowdate.getDay()-1)*86400000);
var WeekLastDay=new Date((WeekFirstDay/1000+6*86400)*1000);
var MonthFirstDay=new Date((WeekLastDay/1000+7*86400)*1000);
return formatDate(MonthFirstDay,formattype); 
}
//下月第一天
function getNextFirstDay(formattype)
{
var Nowdate=new Date();
var MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth(),1);
MonthFirstDay=new Date(MonthFirstDay.getYear(),MonthFirstDay.getMonth()+1,1);
return formatDate(MonthFirstDay,formattype);
}
//下月最后一天
function getNextLastDay(formattype)
{
var Nowdate=new Date();
var MonthFirstDay=new Date(Nowdate.getFullYear(),Nowdate.getMonth(),1);
MonthFirstDay=new Date(new Date(MonthFirstDay.getYear(),MonthFirstDay.getMonth()+2,1)-86400000);
return formatDate(MonthFirstDay,formattype);
}
function getDateList(){

var d = new Date('2007/07/07');
alert(d.getMonth())

}

分享到:
评论

相关推荐

    js对日期操作

    Date.prototype.Format 日期格式化 Date.prototype.DateAdd 日期计算 Date.prototype.DateDiff 比较日期差 Date.prototype.toString 日期转字符串 Date.prototype.toArray 日期分割为数组 Date.prototype.DatePart ...

    JS日期选择控件和日期类型操作

    JS日期选择控件,JS日期类型验证,JS计算两个日期相差天数

    js 日期加操作

    2. FF支持new Date(dateStr),直接一个日期字符串,而IE7,8不支持, 需要如此new Date(year, Month,Date,Hours,Minutes,Seconds); 所以可以调用Date.js 里的方法dateCommon.newDate(dateStr);这个方法,直接传递...

    js日期输入控件,键盘实现快速输入(绝对原创)

    通常我们从网上找到的,都是通过鼠标选择的js日期控件,例如最流行的My97DatePicker。但是这些控件仅仅是好看,在很多业务系统中,操作员更希望所有的信息都是靠键盘输入,这样的输入速度,比一会儿用键盘,一会儿用...

    Javascript 日期对象Date扩展

    Date对象扩展,包括常用中文日期格式解析、加减操作、日期差、周操作和季操作。具体扩展的方法如下: parseCHS--静态方法。解析常用的中文日期并返回日期对象。 add--日期加减操作。[注:此函数在上传时还存在...

    js操作日期函数

    上个月的最后一天;下个月的第一天;获取月份的天数 ;获取月份中的第一天是所在星期的第几天;解析字符串成日期格式对象;格式化日期对象为字符串;计算两个日期相差的天数;

    JS 日期操作代码,获取当前日期,加一天,减一天

    利用Js在一个文本框内设置当前的时间,两个button,一个点一下加一天,一个点一下减一天。

    js日期相关操作.txt

    js日期相关操作.txtjs日期相关操作.txt

    js日期工具

    实用js日期控件,是一款原生JS开发的 不依赖任何第三方库 大众化的日期控件,她身兼多职,虽不是万能的,但是她却是功能强大多样的美少女,她除了包含 单双面板、区域选择、 多语言、日历固定、有效无效日期、日期...

    JS 日期控件 可自定义日期格式及选择方式

    JS 日期控件,操作简单,只需引用一个JS库就可以调用日期,也可自定义日期格式,也可自定义日期显示的方式,如,要求只能选择发生过的日期,或只能选择未发生的日期,或则对日期选择无限制,均可设置

    Js获取当前日期时间及其它操作

    Js获取当前日期时间及其它操作 还有一些自己风装好的方法,很好用,也很全。js的日期判断。

    js日期时间操作函数.pdf

    js日期时间操作函数.pdf

    javascript 日期工具类

    导入js文件 用法 var newDate=DateUtil.Format("yyyy/MM/dd",new Date()); 第一个参数可以根据需要改

    js字符串日期yyyy-MM-dd转化为date示例代码

    最近遇到一个问题,就是获取表单中的日期往后台通过json方式传的时候,遇到Date.parse(str)函数在ff下报错: NAN 找了些资料,发现是由于Date.parse()函数对日期格式有要求:详细参考 Date.parse函数 对于js操作日期: ...

    支持多种调用模式js日期选择

    支持多种调用模式,下拉,输入,导航选择日期,支持周显示,起始日期功能 ,自定义格式,限制日期的范围,选择今天以前的日期(包括今天),选择今天以后的日期(不包括今天),选择本月的日期1号至本月最后一天,选择今天7:00:...

    兼容Safari日期操作

    兼容Safari Chrome等各个主流浏览器 通过js对日期进行操作,避免无效日期

    Js 获取当前日期时间及其它操作实现代码

    myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-????) myDate.getMonth(); //获取当前月份(0-11,0代表1月) myDate.getDate(); //获取当前日(1-31) ...

    js内计算日期差

    个人总结很好用的js内对日期的各种操作,直接调用即可

    javascript日期操作详解(脚本之家整理)

    时间对象是一个我们经常要用到的对象,无论是做时间输出、时间判断等操作时都与这个对象离不开。除开JavaScript中的时间对象外,在VbScript中也有许多的时间对象,而且非常好用。下面还是按照我们的流程来进行讲解

Global site tag (gtag.js) - Google Analytics