JS日期处理

关于日期的常见操作  
  http://community.csdn.net//Expert/TopicView2.asp?id=4360247&datebasetype=now  
  js   FAQ贴  
  http://community.csdn.net//Expert/TopicView2.asp?id=4356360&datebasetype=now  
  DHTML手册,js手册,dom手册下载  
  http://community.csdn.net//Expert/TopicView2.asp?id=4356325&datebasetype=now

 

综合整理之后的PowerDate   .方便处理常日公历日期操作.  
   
    

 

 

 

常在js版转,发现有很多问题问来问去N多遍.于是有这个想法,把常见的问题汇总成一个贴子.  
  我个人所拥有的代码相当有限,所以要大家群策群力共同来维护这个帖子.  
  回帖时注意:  
      请先查看前面回帖,已经避免发过的东西重复发布.  
      尽可能一次性尽可能多的贴代码,不要帖子很长但内容很少.  
      要加比较明朗的注释,不要让人望而怯步,不知所云.  
   
  如果该贴有较好的效应,请大梅同志开恩置顶.

JS   对   cookie   操作  
  function   setCookie(name,value)  
  {  
      var   Days   =   30;   //此   cookie   将被保存   30   天  
      var   exp     =   new   Date();         //new   Date("December   31,   9998");  
      exp.setTime(exp.getTime()   +   Days*24*60*60*1000);  
      document.cookie   =   name   +   "="+   escape(value)   +";expires="+   exp.toGMTString();  
  }  
  function   getCookie(name)  
  {  
      var   arr   =   document.cookie.match(new   RegExp("(^|   )"+name+"=([^;]*)(;|$)"));  
      if(arr   !=   null)   return   unescape(arr[2]);   return   null;  
  }  
  function   delCookie(name)  
  {  
      var   exp   =   new   Date();  
      exp.setTime(exp.getTime()   -   1);  
      var   cval=getCookie(name);  
      if(cval!=null)   document.cookie=name   +"="+cval+";expires="+exp.toGMTString();  
  }  
   
   
   
   
   
   
   
   
  //两端去空格函数  
  function   trim(str)   {  
  return   str.replace(/(^/s*)|(/s*$)/g,"");  
  }  
   
   
   
   
  Ms   XmlDom   异步装载Xml文件    
  放在这里,算作是资源备份吧。  
   
   
  URL:    
   
 

 
   
   
  //带中文字符串长度,一个中文字长度为2  
  String.prototype.lenB   =   function(){return   this.replace(/[^/x00-/xff]/g,"**").length;}  
    document.all.tes1.value.lenB();  
   
   
   
  预判断一下链接URL是否可用  
   
   
   
   
  //将数字转换成三位逗号分隔的样式  
  function   formatNum(s)    
  {  
      if(!/^(/+|-)?/d+(/./d+)?$/.test(num)){alert("wrong!");   return   num;}  
      var   re   =   new   RegExp().compile("(//d)(//d{3})(,|//.|$)");  
      num   +=   "";   while(re.test(num))  
          num   =   num.replace(re,   "$1,$2$3")  
      return   num;  
  }  
  alert(formatNum(-12345678.123));  
  alert(formatNum("12345678.123"));  
  alert(formatNum("10000000000000000000000000000000000000000"));  
   
   
   
  格式化日期:yyyy-m-d   to   yyyy-mm-dd  
   
   
   
   
  表格中的行删除功能,用checkbox选择的  
   
 
 
   
   
 
 
 
 
   
   
   
  yyyy-mm-dd格式日期完整校验加提示  
   
   
   
   
   
   
  类似CSDN感兴趣社区配置页面中的checkbox选择的功能  
   
   
  typetext  
 
  • typetext
  •  
     
  • typetext
  •  
     

     
      typetext  
     
  • typetext
  •  
     
  • typetext
  •  

    JS时间处理

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

    它是一个内置对象——而不是其它对象的属性,允许用户执行各种使用日期和时间的过程。
     方法:分为得到时间方法、设置时间方法和转换时间方法

    得到时间方法:
      getDate() 查看Date对象并返回日期
      getDay() 返回星期几
      getHours() 返回小时数
      getMinutes() 返回分钟数
      getMonth() 返回月份值
      getSeconds() 返回秒数
      getTime() 返回完整的时间
      getYear() 返回年份
      

    设置时间方法:
      setDate() 改变Date对象的日期
      setHours() 改变小时数
      setMinutes() 改变分钟数
      setMonth() 改变月份
      setSeconds() 改变秒数
      setTime() 改变完整的时间
      setYear() 改变年份

    转换时间方法:
      toGMTString() 把Date对象的日期(一个数值)转变成一个GMT时间字符串,返回类似下面的值:Weds,15 June l997 14:02:02 GMT(精确的格式依赖于计算机上所运行的操作系统而变)
      toLocaleString() 把Date对象的日期(一个数值)转变成一个字符串,使用所在计算机上配置使用的特定日期格式
      UTC() 使用Date UTC(年、月、日、时、分、秒),以自从1970年1月1日00:00:00(其中时、分、秒是可选的)以来的毫秒数的形式返回日期
    几个需要注意的地方:

    1、得到日期和年和设置日期和年时间,其中很怪的问题就是不能对月份进行设置(比较的怪):


    2、获得年的时候最好用getFullYear()方法来做

    3、由于针对月份,JS是从0开始的,因此需要对月份进行操作时要加1



    下面是几个关于时间的经典而且经常会用到的例子,希望对大家会有提高的。谢谢继续关注该帖子。。。

    1、将2005-8-5转换成2005-08-05格式


    2、得到间隔天数


    3、得到间隔时间


    4、得到今天的日期


    6、数字日期转汉字


    New Document








    7、得到前N天或后N天的日期
    方法一:

    方法二:

    方法三(不好意思,这个市用vsscript做的):

    方法四:

     

    --------------------------------------------------------------------
    
    DWASearch Form JS header
    
    
    
    function SetValue()
    {
    var todays = new Date(); 
    var years = todays.getFullYear(); 
    var lastyears=years-1;
    var months = todays.getMonth()+1; 
    var mdays = todays.getDate(); 
    var endDates = years + "-" + months + "-" + mdays;  /endDates
    var stDates = lastyears + "-" + months + "-" + mdays; /stDates
    
    document.all.endDate.value=endDates;
    document.all.startDate.value=stDates;
    
    var pasttwoyears=years-2;
    var pasttwoyeardate=pasttwoyears+ "-" + months + "-" + mdays;
    var pastthreeyears=years-3;
    var pastthreeyeardate=pastthreeyears+ "-" + months + "-" + mdays;
    
    document.all.Today.value=endDates;
    document.all.Lasttwelvemonths.value=stDates;
    document.all.Pasttwoyear.value=pasttwoyeardate;
    document.all.Pastthreeyear.value=pastthreeyeardate;
     
    //last week
    function showdate(n) 
    { 
    var uom = new Date(new Date()-0+n*86400000); 
    uom = uom.getFullYear() + "-" + (uom.getMonth()+1) + "-" + uom.getDate(); 
    return uom; 
    } 
    document.all.PastWeek.value=showdate(-7); 
     
    // .Lastthreemonths. Lastsixmonths
    function makeArray() {
        for (i = 0; i=beforedaycount){//如果本月天数大于前一个月   
                  if(today.getDate()>=beforedaycount){//如果当前的天数大于上个月的天数,那么上个月返回末   
                before.setDate(beforedaycount);   
          }   
          else{//否则返回上个月相同号数的一天   
                before.setDate(today.getDate());   
          }   
            }   
            else{   
                  if(today.getDate()   ==   todaydaycount){//如果到了本月末尾,返回上月的最后一天   
                before.setDate(beforedaycount);   
          }   
          else{   
                before.setDate(today.getDate())//否则返回上个月相同号数的一天   
          }   
                    
            }         
             return before;
      }
        
       
       
     }
    
     /*
      
     
     Date.prototype.addMonth = function(num){if(!isNaN(num))this.setMonth(this.getMonth() + parseInt(num));return this;}
    //创建date
    var datedd = new Date();
    //date.addMonth(1);//加1个月
    //date.addMonth(10);//加10个月
    //date.addMonth(-1);//减1个月
    document.all.Lastthreemonths.value=datedd.addMonth(-3);
    document.all.Lastsixmonths.value=datedd.addMonth(-3); 
    
      function  getNextYear() 
    { 
            var  d  =  new  Date(); 
            return  new  Date(d.getFullYear(),d.getMonth()-1,d.getDate()); 
    } 
    
    function makeArray() {
        for (i = 0; i

    ===================again==============================

    function SetValue()
    {
    var todays = new Date();
    var years = todays.getFullYear();
    var lastyears=years-1;
    var months = todays.getMonth()+1;
    var mdays = todays.getDate();
    var endDates = years + "-" + months + "-" + mdays;  /endDates
    var stDates = lastyears + "-" + months + "-" + mdays; /stDates

    document.all.endDate.value=endDates;
    document.all.startDate.value=stDates;

    var pasttwoyears=years-2;
    var pasttwoyeardate=pasttwoyears+ "-" + months + "-" + mdays;
    var pastthreeyears=years-3;
    var pastthreeyeardate=pastthreeyears+ "-" + months + "-" + mdays;

    document.all.Today.value=endDates;
    document.all.Lasttwelvemonths.value=stDates;
    document.all.Pasttwoyear.value=pasttwoyeardate;
    document.all.Pastthreeyear.value=pastthreeyeardate;
     
    //last week
    function showdate(n)
    {
    var uom = new Date(new Date()-0+n*86400000);
    uom = uom.getFullYear() + "-" + (uom.getMonth()+1) + "-" + uom.getDate();
    return uom;
    }
    document.all.PastWeek.value=showdate(-7);
     
    // .Lastthreemonths. Lastsixmonths
    function makeArray() {
        for (i = 0; i        this[i + 1] = makeArray.arguments[i];
    }
     var months = new makeArray('1','2','3','4',
                               '5','6','7','8','9',
                               '10','11','12');
     
    function y2k(number) { return (number < 1000) ? number + 1900 : number; }
    function monthsahead(noofmonths) {
        var today = new Date();
        var date = new Date(today.getYear(),today.getMonth() + noofmonths,today.getDate(),today.getHours(),today.getMinutes(),today.getSeconds())
       return y2k(date.getYear())+'-'+months[date.getMonth() + 1]+'-'+date.getDate();
    }
    document.all.Lastthreemonths.value=monthsahead(-3);
    document.all.Lastsixmonths.value=monthsahead(-6);
     

    var BeforeMonthDay=getBeforeMonthDay();
    var BeforeMonthDayyears = BeforeMonthDay.getFullYear(); 
    var BeforeMonthDaymonths = BeforeMonthDay.getMonth()+1;
    var BeforeMonthDaydays = BeforeMonthDay.getDate();
    var BeforeMonthDayre = BeforeMonthDayyears + "-" + BeforeMonthDaymonths + "-" + BeforeMonthDaydays;  /endDates
    document.all.PastMonths.value=BeforeMonthDayre;  

      function     getBeforeMonthDay(){  
            var   msecondsPerMinute   =   1000   *   60;  
            var   msecondsPerHour   =   msecondsPerMinute   *   60;  
            var   msecondsPerDay   =   msecondsPerHour   *   24;  
            var   today   =   new   Date();//今天的日期
     
                    today.setMonth(today.getMonth());  
                    //today.setDate(30);  
                      
    var   temptoday   =   new   Date(today);//用来计算的这个月的1号  
                     temptoday.setDate(1);  
                         var   before   =   new   Date(today);//用来保存前一个月的日期  
                    before.setMonth(today.getMonth()-1);  
            var   tempbefore   =   new   Date(before);//用来计算的前一个月的1号                
            tempbefore.setDate(1);  
            var   next   =   new   Date(today);//下个月,用来计算本月有多少天  
                    next.setMonth(today.getMonth()+1);  
            next.setDate(1);  
       
            var   beforedaycount   =Math.floor((temptoday-tempbefore)/msecondsPerDay);//计算前一个月天数  
            var   todaydaycount   =Math.floor((temptoday-tempbefore)/msecondsPerDay);//计算本月差额天数  
            if(todaydaycount>=beforedaycount){//如果本月天数大于前一个月  
                  if(today.getDate()>=beforedaycount){//如果当前的天数大于上个月的天数,那么上个月返回末  
                before.setDate(beforedaycount);  
          }  
          else{//否则返回上个月相同号数的一天  
                before.setDate(today.getDate());  
          }  
            }  
            else{  
                  if(today.getDate()   ==   todaydaycount){//如果到了本月末尾,返回上月的最后一天  
                before.setDate(beforedaycount);  
          }  
          else{  
                before.setDate(today.getDate())//否则返回上个月相同号数的一天  
          }  
                   
            }        
             return before;
      }
        
     }

     

    你可能感兴趣的:(他山之石)