`
mutongwu
  • 浏览: 449852 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

日期解析函数

阅读更多
半成品,凑合用一下。

function parseDate(str,fm){
    var start = 0,ch1 = null,ch2 = null;
    var chReg = /^[yMdhms]$/,
      nReg = /^\d$/;
    str = str.replace(/^\s+/g,'').replace(/\s+$/,'');
    fm = fm.replace(/^\s+/g,'').replace(/\s+$/,'');
    if(str.length !== fm.length){
        return null;
    }

    var dtArr = [];
    function convert(start,end){
      var tmp = parseInt(str.substring(start,end),10);
            switch(ch1){
                case 'y' : dtArr[0] = tmp;break;
                case 'M' : dtArr[1] = tmp - 1;break;
                case 'd' : dtArr[2] = tmp;break;
                case 'h' : dtArr[3] = tmp;break;
                case 'm' : dtArr[4] = tmp;break;
                case 's' : dtArr[5] = tmp;break;
                default:  throw new Error("Invalid Date.");
            }
    }

    ch1 = fm.charAt(i);
    var flag = true;//有效字符开始标志
    try{
      for(var i = 0,len = fm.length; i < len; i++){
          ch2 = fm.charAt(i);
          if(chReg.test(ch2) && nReg.test(str.charAt(i))){//有效日期字符
              if(ch2 === ch1){
                  continue;
              }else{//新的时间
                  ch1 = ch2;
                  if(flag){
                    convert(start,i);
                  }
                  flag = true;
                  start  = i;
              }
          }else if(ch2 === str.charAt(i)){
            if(flag){
              convert(start,i);
            }else{
              start  = i;
            }
            flag = false;
          }else{
            throw new Error('format no match.');
          }
      }
      convert(start,i);
    }catch(e){
      console.error(e);
      return null;
    }
    
    return new Date(dtArr[0],dtArr[1],dtArr[2],dtArr[3]||0,dtArr[4]||0,dtArr[5]||0,0);
}


usage:
console.log(parseDate('2014-11-08','yyyy-MM-dd'));
									console.log(parseDate('2014-02-08 22:22:12','yyyy-MM-dd hh:mm:ss'));
									console.log(parseDate('31/01/2011','dd/MM/yyyy'));
分享到:
评论

相关推荐

    计算机后端-PHP视频教程. php与mysql加强- 03. php加强32-日期解析函数.wmv

    计算机后端-PHP视频教程. php与mysql加强- 03. php加强32-日期解析函数.wmv

    sap abap日期类函数参考

    - 然后,它将内部日期格式的 ZDATE 解析为年(lv_year)、月(lv_month)和日(lv_day)。 - 接下来,通过 SELECT 语句从 USR01 表中获取用户的日期格式(datfm)。 - 如果查询成功(SY-SUBRC = 0),则根据找到的...

    GPS解析函数

    GPS解析函数是用于处理GPS接收器发送的数据报文的程序,这些报文通常遵循NMEA(北美电子导航设备制造商协会)标准格式。NMEA报文包含多种类型,如GPGGA、GPGSA、GPGSV和GPRMC等,每种类型提供了不同的GPS信息。 在...

    sybase日期函数全解析

    本文将深入解析Sybase的四个主要日期函数及其应用。 1. **getdate()** 函数: - `getdate()` 用于获取当前系统时间,返回的是一个datetime类型的数据,可以进一步通过转换函数来获取所需的时间格式。例如,你可以...

    SQL语句范例-有关日期的函数

    下面,我们将深入解析并解释这些函数的意义和应用场景。 ### 1. 获取年份的两位数字表示 函数原型:`intls_year(string)` 实现方式:通过模运算计算当前年份与1900之间的余数,并根据结果选取字符串“ţF”中的...

    java日期类函数方法整理

    这些类提供了丰富的函数和方法,用于日期的格式化、解析、获取当前时间以及日期的转换等操作。 #### `java.util.Date` `java.util.Date`是Java中表示具体时间点的基本类。它可以被用来表示当前时间,或任意一个...

    C++ 日历 计算相距日期

    6. **日期解析**:C++没有内置的日期解析函数,但你可以使用第三方库如`boost.date_time`或自定义函数来解析用户输入的日期。例如,将"2022-02-14"这样的日期字符串转换为`std::tm`。 7. **格式化输出**:输出日期差...

    pb 日期函数

    根据给定文件的信息,我们...以上就是对给定文件中的各个日期函数的详细解析。这些函数覆盖了日期处理中的常见需求,如判断闰年、获取星期几、增加月份等。通过这些函数的灵活应用,可以有效地解决日期相关的各种问题。

    sql日期函数大全

    ### SQL日期函数大全:深入解析与实用技巧 在SQL中,日期函数是处理时间数据的强大工具,它们能够帮助我们执行日期的加减、比较、格式化等操作,从而在数据分析和报告生成中发挥关键作用。本文将围绕标题“SQL日期...

    Oracle 日期函数的用法与解析

    涉及Oracle常用日期函数的用法、解析以及相关实例

    datetimepicker 日期NaN错误 中文乱码(附修正版)

    - **源码检查**:查看datetimepicker插件的源码,确认日期解析函数是否能正确处理各种输入情况,以及是否对中文字符进行了适当的处理。 - **调试工具**:使用浏览器的开发者工具来检查网络请求、DOM元素和JavaScript...

    VB日期函数

    ### VB日期函数详解 在Visual Basic (VB)编程语言中,日期函数是非常重要的工具,用于处理日期和时间数据。本文将详细介绍几个常见的VB日期函数及其用法,帮助开发者更好地理解和运用这些函数。 #### DATE 函数 **...

    mysql 日期函数相关操作

    以下是对几个常用日期函数的详细解析: ### 1. `TO_DAYS(date)` `TO_DAYS()`函数将一个日期转换为从“0000-00-00”到指定日期的天数。这在比较两个日期或计算两个日期之间的天数差时非常有用。 例如: ```sql ...

    GPS_Analyse.zip_GPS解析函数_gps analyse

    标题中的“GPS_Analyse.zip_GPS解析函数_gps analyse”表明这是一个关于GPS数据解析的软件包,其中包含了实现GPS数据解析功能的源代码。这个压缩包里有两个主要的文件:GPS_Analyse.c 和 GPS_Analyse.h。这些文件...

    NextDate()函数判断输入日期的下一天(C语言编写)

    文章将分为几个部分:背景介绍、关键函数解析、日期合法性检查功能解析以及完整的程序运行逻辑。 ### 背景介绍 在软件测试课程中,决策表是一种常用的方法来确定测试用例的组合,它可以帮助测试人员更系统地覆盖...

    delphi日期转换函数

    标题中的"delphi日期转换函数"主要涉及到如何将日期字符串按照特定格式进行解析和格式化。 描述中提到的"国际日期格式转换,例如02AUG12=&gt;20140802"是一个具体的例子。这种转换通常需要开发者自定义函数,因为标准...

    Office2016办公软件_Excel 2016十大常用函数_Excel中的文本日期函数.pdf

    以下将详细解析Excel中涉及的这些关键函数。 1. **LEN()和LENB()** - **LEN()** 函数用于计算文本字符串的字符数。例如,如果你有一个单元格包含文本"Hello",LEN("Hello")将返回5。 - **LENB()** 与LEN()类似,...

    mysql日期处理函数实例解析

    在本篇文章中,我们将深入探讨一些常用的日期处理函数,并通过实例来解析它们的用法。 1. **`NOW()`函数**: `NOW()`函数用于获取当前系统日期和时间。在创建`t_student`表时,`birthday`字段插入了当前日期,即`...

    js操作日期函数

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

Global site tag (gtag.js) - Google Analytics