gpt4 book ai didi

javascript - JS Date - 正确解析 ddMMyyyy 格式的日期

转载 作者:行者123 更新时间:2023-11-30 13:19:37 24 4
gpt4 key购买 nike

我在使用 Javascript 解析用户输入时遇到问题,无法让解析器正确接受 ddMMyyyy 中的日期。当有分隔符时,它会正确解析。

下面的例子使用了DateJS (NZ 本地化),我已经初步尝试使用较新的 MomentJs (事实证明这不是输入验证的理想选择)。如果其他框架能够充分处理输入案例,我对它们持开放态度。

我的测试用例:

// Parses correct value
var dateWithHyphens = Date.parse('01-06-2012');

// Parses incorrectly, using MMddyyy, instead of ddMMyyyy
var dateWithoutHyphens = Date.parse('01062012');

// Parses incorrectly, using MMddyyy, instead of ddMMyyyy
var dateWithFormat = Date.parse('01062012', { format: 'ddMMyyyy'});

我为此创建了一个 JSFiddle:http://jsfiddle.net/ajwxs/1

测试用例应在 6 月 1 日返回,但不正确的测试用例会在 1 月 6 日返回。(这是输入解析 - 输出格式化为时已晚)。

关于是否可以更好地促使 JSDate 使用正确的格式来解析这些日期有什么建议吗?

更新

在此应用程序中,我正在验证许多可能的用户输入,包括:

01062012
01/06/2012
010612

这会使 parseExact 风格的实现有点冗长......

最佳答案

我不知道 DateJS,但如果您发现它假设 MMddyyyy 在您想要 ddMMyyyy 的位置,那么您可以快速替换您的字符串在解析之前将其切换为 MMddyyyy:

Date.parse( '01062012'.replace(/^(\d\d)(\d\d)(\d\d\d\d)$/,"$2$1$3") );

或者做一个类似的替换以插入连字符并使其成为dd-MM-yyyy:

Date.parse( '01062012'.replace(/^(\d\d)(\d\d)(\d\d\d\d)$/,"$1-$2-$3") );

无论哪种方式,其中已经包含连字符的字符串都将保持不变,因此会根据您的第一个(成功的)测试用例进行解析。

关于javascript - JS Date - 正确解析 ddMMyyyy 格式的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10711756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com