gpt4 book ai didi

javascript - 时刻 javascript 库和 javascript 日期在有效时间的使用情况

转载 作者:行者123 更新时间:2023-11-28 09:08:08 26 4
gpt4 key购买 nike

我目前正在编写一个 ASP.NET 应用程序(在 SharePoint 中),该应用程序需要对表单中的字段执行验证。我目前正在寻找验证日期和时间的方法,其中包括比较两个日期时间(小于/大于)和验证格式。

我最初查看的是datejs但自 2007 年以来就没有更新过。根据文档,最后一个版本似乎缺少两个函数 - isAfter 和 isBefore - 所以我将注意力转向使用 moment javascript library

我目前有一个开始日期、开始时间、结束日期和结束时间文本字段 - 所有这些都是必需的,因此我没有开始日期时间和结束日期时间 - 用户输入的内容。我还使用 jQuery 日期选择器和 jquery-ui-timepicker-addon选择日期和时间。

我遇到的一个问题是,在时间字段中输入时间时,我可以输入以下内容:

11:90 - 这将调整为 11:59。

11:100 - 不调整。

这是我将值输入到自定义验证 JavaScript 函数中以验证时间的地方。这是使用以下代码完成的:

function ValidateTimeFormat(objSource, objArgs) {
var strToCompare = objArgs.Value;
var timeFormat = 'HH:mm';
var expectedEndDateObj = moment(strToCompare, timeFormat);
objArgs.IsValid = expectedEndDateObj.isValid();
}

使用 ASP.NET 代码片段:

<div class="label-div">
<asp:Label ID="StartTimeLabel" runat="server" Text="Actual Start Time:"></asp:Label>
<asp:RequiredFieldValidator ID="ActualStartTimeRequiredValidator"
runat="server"
ControlToValidate="StartTimeTextBox"
ErrorMessage="Actual start time is required field"
Display="Dynamic">*</asp:RequiredFieldValidator>
<asp:CustomValidator ID="ActualStartTimeCustomValidator"
runat="server"
ControlToValidate="StartTimeTextBox"
ErrorMessage="Actual start time format is not correct"
Display="Dynamic"
ClientValidationFunction="ValidateTimeFormat">*</asp:CustomValidator>
</div>
<asp:TextBox ID="StartTimeTextBox" runat="server" ></asp:TextBox></li>

根据 momentjs(如果我删除 jQuery 时间选择器):

  • 11:90 无效。
  • 11:100 有效。

我还没有看到任何论坛或对 momentjs 的支持,所以我想在这里询问。有无数种方法可以验证时间,包括在您自己的自定义验证例程中使用正则表达式 - 但我现在不想重新发明轮子。我想要一个很好的库来完成它。

只是引用 momentjs 文档进行验证 isValid :

主要的moment()函数非常灵活,并且允许在解析输入时溢出。例如,moment("2012-01-40", "YYYY-MM-DD") 会将日期值溢出到月份中,使实际时刻为 2 月 9 日(1 月 31 天 + 9进入二月的几天)。

当获取一年中的第 150 天或一天中的第 500 分钟之类的信息时,这可能很有用,但是,在尝试解析用户输入时可能会出现问题。

添加了 moment#isValid 以检查输入的 moment 是否确实是有效日期。

鉴于该库是 Date 的包装器,我不确定这是 javascript 问题还是 moment - 或者实际上是我自己!

有什么想法吗?

最佳答案

这看起来像是时刻的问题。从 2.3.0 开始,您可以尝试使用此处提到的严格解析 - http://momentjs.com/docs/#/parsing/string-format/

但是我仍然发现矩解析器认为“01:k0 A”之类的时间对于“hh:mm A”有效

关于javascript - 时刻 javascript 库和 javascript 日期在有效时间的使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16646517/

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