分享一个将指定日期格式的字符串转为日期的js函数toDate

今天发现easyui的datetimebox不能正常显示日期,接着自然就是实现toDate的功能,google了下,没找到满意的,都写的很罗嗦。自己写一个,本来以为js的正则也可以用命名group来弄,但是目前看javascript好像不支持。现在实现的代码如下,希望对有需要的人也有帮助。

//by dragonimp 2015.5.3
//使用方法:
//"2015-5-5 9:10:10".toDate("yyyy-M-d hh:mm:ss")
//"2015/5/5 9:10:10".toDate("yyyy/M/d hh:mm:ss")
String.prototype.toDate = function (fmt) {
    if (fmt == null) fmt = 'yyyy-MM-dd hh:mm:ss';
    var str = this;
    //fmt为日期格式,str为日期字符串
    var reg = /([yMdhmsS]+)/g;//日期格式中的字符
    var key = {};
    var tmpkeys = fmt.match(reg);
    for (var i = 0 ; i < tmpkeys.length; i++) {
        key[tmpkeys[i].substr(0, 1)] = i + 1;
    }
    var r = str.match(fmt.replace(reg, "(\\d+)"));
    return new Date(r[key["y"]], r[key["M"]] - 1, r[key["d"]], r[key["h"]], r[key["m"]], r[key["s"]], r[key["S"]]);
}

附:easyui的问题和解决方法。

问题:

<input  type="text" value="2015/5/6 23:00:00" id="xxxx" class="easyui-datetimebox" />

这个显示出来的控件,日期的“日”部分显示不正确,会显示当天的日期。

检查了下,easyui已经引用了中文的资源文件,看了下资源文件,应该只支持"-"分割的日期,我这里是"/"

解决:需要自己实现formatter和parser。

1.加上options

<input  type="text" value="2015/5/6 23:00:00" id="xxxx" class="easyui-datetimebox" data-options="formatter:datetimebox_format,parser:datetimebox_parse" />

2.实现解析和格式化函数

function datetimebox_format(date) {
return date.toFormatString("yyyy/M/d h:mm:ss");
}
function datetimebox_parse(s) {
return s.toDate("yyyy/M/d hh:mm:ss");
}  

//a)转日期的,见前面我的toDate
//b)下面转字符串的,来自网上

Date.prototype.toFormatString = function (fmt) {
    var o = {
        "M+": this.getMonth() + 1,                 //月份
        "d+": this.getDate(),                    //日
        "h+": this.getHours(),                   //小时
        "m+": this.getMinutes(),                 //分
        "s+": this.getSeconds(),                 //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds()             //毫秒
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

时间: 2024-10-24 22:52:06

分享一个将指定日期格式的字符串转为日期的js函数toDate的相关文章

MVC扩展ModelBinder使类型为DateTime的Action参数可以接收日期格式的字符串

原文:MVC扩展ModelBinder使类型为DateTime的Action参数可以接收日期格式的字符串 如何让视图通过某种途径,把符合日期格式的字符串放到路由中,再传递给类型为DateTime的控制器方法参数?即string→DateTime.MVC默认的ModelBinder并没有提供这样的机制,所以我们要自定义一个ModelBinder. 首先,在前台视图中,把符合日期格式的字符串赋值给date变量放在路由中: @Html.ActionLink("传入日期格式为2014-06-19&quo

js字符串转为日期格式

1. <script type="text/javascript"> //字符串转日期格式,strDate要转为日期格式的字符串 function getDate(strDate){ var date = eval('new Date(' + strDate.replace(/\d+(?=-[^-]+$)/, function (a) { return parseInt(a, 10) - 1; }).match(/\d+/g) + ')'); return date; }

js常规日期格式处理、月历渲染、倒计时函数

日期格式处理在前端的日常任务中非常常见,但是为此引入monent.js这样的类库又会显得有点臃肿,毕竟我们一个特定的项目中,并不需要monent.js那么全的涵盖范围.另外,如果现在公司让你自己手写一个日历组件(月历.周历),日历组件中需要耦合我们的其他业务需求,如果有一个任务列表,当11月22号的待进行任务,我需要在日历上有一个绿色圆点,表示当天有待办事项.下面介绍一些常规的函数,希望对大家有用. 月历效果图 月历.png 函数目录 getFormatDateStr 获得指定日期格式的字符串:

ABAP - 日期格式转换 &amp; ABAP常用日期处理函数

ABAP - 日期格式转换 现在提供以下一些日期格式转换的函数: Below are several FMs which can be used to convert date format. 1. CONVERSION_EXIT_IDATE_OUTPUT INPUT:      20080203 OUTPUT:   03FEB2008 2. CONVERT_DATE_TO_EXTERNAL INPUT:      20080203 OUTPUT:   02/03/2008    "Accord

数据清洗之数据转换 日期格式、字符串、高阶函数

数据清洗之数据转换 1.日期格式数据处理 In [ ]: import numpy as np import pandas as pd In [ ]: import os os.chdir(r'F:\CSDN\课程内容\代码和数据') In [ ]: df = pd.read_csv('baby_trade_history.csv', encoding='utf-8',dtype={'user_id':str}) In [ ]: df.head(10) In [ ]: # 对购买日期进行转换,将

分享一个不错的pdf格式转换工具

PDF文档怎么转换成其他的流行格式?PDF作为一种跨平台的电子文档格式,一直深受广大作者的喜爱,可是编辑并不方便.有没有PDF转换成Office之类的转换工具呢?关于这类的软件网上一搜一大推,让人迷茫啊,有木有?下载了一大堆软件后,没有感觉靠谱的有木有? 好吧,不废话不煽情了,现在就分享一个试用过的,感觉非常不错的PDF转Office工具,迅捷PDF转换器.它是一款完全免费的PDF转换器工具,软件体积小巧.操作简单.界面美观大方实用,最主要的是支持批量PDF文件转换,一般网上能搜到的PDF转换器

使用thymeleaf框架,前台日期格式是字符串,后台不能以Date格式接收解决

import org.springframework.beans.propertyeditors.CustomDateEditor;import org.springframework.web.bind.WebDataBinder;import org.springframework.web.bind.annotation.InitBinder; import java.text.SimpleDateFormat;import java.util.Date; Spring MVC 框架 公共父类

python 日期格式和字符串格式的转化

startDate = "2018-10-01"endDate = "2018-10-31" ###字符转化为日期startTime = datetime.datetime.strptime(startDate, '%Y-%m-%d').time()endTime = datetime.datetime.strptime(endDate, '%Y-%m-%d').time() now = datetime.datetime.now()print(now) ###日期

sqlite 日期型 字符串转为日期型

因为sqlite为弱引用,使用字段前将他强制转为日期型,用datetime.或者最原始的 strftime. SELECT distinct ID from testTable where datetime(availDate) between datetime('2015-01-12 04:00') and datetime('2015-01-13 00:00'); SQLite日期时间函数 SQLite支持以下五个日期时间函数: date(timestring, modifier, modi