如何使用JavaScript或jQuery解析“ dd / mm / yyyy”或“ dd-mm-yyyy”或“ dd-mmm-yyyy”格式的日期字符串[重复]

2020/12/03 07:22 · jquery ·  · 0评论

可能重复:
扩展JavaScript的Date.parse以允许DD / MM / YYYY(非美国格式的日期)吗?
将dd-mm-yyyy字符串转换为日期

在文本框中输入日期,例如:05/09/1985,我想将其转换为1985年9月5日(dd-MMM-yyyy)格式。我将如何实现?请注意,源格式可以是dd-mm-yyyydd/mm/yyyydd-mmm-yyyy格式。

代码段:

 function GetDateFormat(controlName) {
        if ($('#' + controlName).val() != "") {      
            var d1 = Date.parse($('#' + controlName).val());
            if (d1 == null) {
                alert('Date Invalid.');
                $('#' + controlName).val("");
            }
                var array = d1.toString('dd-MMM-yyyy');
                $('#' + controlName).val(array);
        }
    }

该代码返回1985年5月9日,但我希望1985年9月5日谢谢。

您可能想使用诸如http://momentjs.com/的帮助程序库,该包装了本地javascript日期对象,以便于操作。

然后,您可以执行以下操作:

var day = moment("12-25-1995", "MM-DD-YYYY");

要么

var day = moment("25/12/1995", "DD/MM/YYYY");

然后按日期操作

day.add('days', 7)

并获取本地javascript日期

day.toDate();

更新资料

在下面你说:

抱歉,我之前无法预测日期格式,它应该像dd-mm-yyyy或dd / mm / yyyy或dd-mmm-yyyy格式,最后我想将所有这些格式转换为dd-MMM-yyyy格式。

完全改变了问题。如果您无法控制格式,它将更加复杂。JavaScript没有内置任何可让您指定日期格式的内容。正式地,JavaScript支持的唯一日期格式是ISO-8601简化版本yyyy-mm-dd,尽管实际上几乎所有浏览器也都支持yyyy/mm/dd但是除此之外,您还必须自己编写代码或使用一个好的库(这更有意义)。我可能会使用诸如moment.jsDateJS之类的库(尽管DateJS多年来没有得到维护)。


原始答案

如果格式始终为 dd/mm/yyyy,那么这很简单:

var parts = str.split("/");
var dt = new Date(parseInt(parts[2], 10),
                  parseInt(parts[1], 10) - 1,
                  parseInt(parts[0], 10));

split在给定的分隔符上拆分字符串。然后,我们parseInt将字符串转换为数字,并使用new Date构造函数Date从这些部分中构建一个:第三部分为年份,第二部分为月份,第一部分为日期。Date使用从零开始的月份号,因此我们必须从月份号中减去1。

Date.parse只能识别特定格式,您不能选择告诉您输入格式是什么。在这种情况下,它认为输入的格式为mm/dd/yyyy,因此结果是错误的。

要解决此问题,您需要自己解析输入(例如使用String.split),然后手动构造一个Date对象,或者使用功能更全的库(例如datejs)

手动解析的示例:

var input = $('#' + controlName).val();
var parts = str.split("/");
var d1 = new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0]));

使用date.js的示例:

var input = $('#' + controlName).val();
var d1 = Date.parseExact(input, "d/M/yyyy");

试试这个:

 function GetDateFormat(controlName) {
        if ($('#' + controlName).val() != "") {      
            var d1 = Date.parse($('#' + controlName).val().toString().replace(/([0-9]+)\/([0-9]+)/,'$2/$1'));
            if (d1 == null) {
                alert('Date Invalid.');
                $('#' + controlName).val("");
            }
                var array = d1.toString('dd-MMM-yyyy');
                $('#' + controlName).val(array);
        }
    }

RegExp替换.replace(/([0-9]+)\/([0-9]+)/,'$2/$1')更改日期/月份位置。

看到这个http://blog.stevenlevithan.com/archives/date-time-format

您可以对日期做任何事情。

文件:http : //stevenlevithan.com/assets/misc/date.format.js

使用脚本标记将此添加到您的html代码中,要使用它,您可以将其用作:

var now = new Date();

now.format("m/dd/yy");
// Returns, e.g., 6/09/07
本文地址:http://jquery.askforanswer.com/ruheshiyongjavascripthuojqueryjiexi-dd-mm-yyyyhuo-dd-mm-yyyyhuo-dd-mmm-yyyyai.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!