广

JavaScript

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    datepicker获取选中日期并格式化输出,在IE中输出

    2018-04-04 08:34:56 次阅读 稿源:互联网
    零七广告

    今天在工作中遇到这样一个问题:使用jquery ui的datepicker日历控件,获取选中的日期,并且要将日期转换成日期对象格式,如:Tue Nov 30 00:00:00 UTC+0800 2010,以便与其他代码对接。

    我的代码如下:

    1. $("#mydate").datepicker({ 
    2.         showOn: "button"
    3.         buttonImage: "images/calendar.gif"
    4.         buttonImageOnly: true
    5.         buttonText:"日历"
    6.         onSelect:function(dateText,inst){ 
    7.                 alert(dateText); 
    8.                 r = new Date(dateText); 
    9.                 alert(r); 
    10.                 ...do something... 
    11.         } 

    我要实现的效果是:当点击日历控件,选中日期时,获取当前日期,并转换日期格式赋值给变量r,用于后面更复杂的工作。

    我们知道,jaascript用来创建一个日期对象,返回当前的日期和时间,直接使用new Date,如

    1. var date = new Date(); 
    2. alert(date); 

    输出的是当前日期和时间,格式为:Tue Nov 30 00:00:00 UTC+0800 2010。直接可以使用在项目中,而且在IE和火狐上都正常。

    可是,如果是new Date()接收外部传来的参数如我使用datepicker中用到new Date(dateText)。这个时候用火狐和谷歌浏览器测试,能正常输出日期格式为:Tue Nov 30 00:00:00 UTC+0800 2010。但是在IE7上就杯具了,IE7输出的结果为:NaN。

    郁闷了一阵子,试过很多方法,最后不得不放弃new Date()这个原始的方法,从找到了一个转换函数,代码如下:

    1. //转换日期格式 
    2. function parseISO8601(dateStringInRange) { 
    3.     var isoExp = /^s*(d{4})-(dd)-(dd)s*$/, 
    4.         date = new Date(NaN), month, 
    5.         parts = isoExp.exec(dateStringInRange); 
    6.  
    7.     if(parts) { 
    8.       month = +parts[2]; 
    9.       date.setFullYear(parts[1], month - 1, parts[3]); 
    10.       if(month != date.getMonth() + 1) { 
    11.         date.setTime(NaN); 
    12.       } 
    13.     } 
    14.     return date; 

    不难看出,代码能将格式为“2010-11-26”的日期转换为:“Fri Nov 26 00:00:00 UTC+0800 2010 ”的格式。于是,在我的代码中直接调用这个函数处理下就OK。最终代码:

    1. $("#mydate").datepicker({ 
    2.         showOn: "button"
    3.         buttonImage: "images/calendar.gif"
    4.         buttonImageOnly: true
    5.         buttonText:"日历"
    6.         onSelect:function(dateText,inst){ 
    7.                 alert(dateText); 
    8.                 var r = parseISO8601(dateText); //转换格式 
    9.                 alert(r); 
    10.                 ...do something... 
    11.         } 

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告