【问题标题】:How to validate user input is current date and time?如何验证用户输入是当前日期和时间?
【发布时间】:2016-05-25 03:54:04
【问题描述】:

在 html 中我使用 ext.net 日期字段

 <ext:DateField runat="server"  ID = "date"  Format="Y-m-d hh:mm:ss" SubmitFormat="Y-m-d H:i:s"  MarginSpec="0 0 0 60" FieldLabel="Gate In Date/Time" AllowBlank="false" IndicatorText="*" IndicatorCls="red-text"/>

当它查看它显示正确的日期但时间总是 12:00:00.In javascript 我是这样做的

var iframeID = $('iframe').attr('id');

var myDate = lazyMethod_get(iframeID, "formdetail", "date")
var today = new Date().toISOString().slice(0, 10);


alert(myDate);
alert(today);

if (myDate > today) {
    alert("Entered date is greater than today's date ");
}
else {
    alert("Entered date is less than today's date ");
}}

验证总是提醒输入的日期小于今天的日期。如果用户插入例如 2016-02-03 日期错误并获取当前日期,我只想验证日期和时间。

谢谢。

【问题讨论】:

  • 格式字符串 'Y-m-d hh:mm:ss' 和 toISOString() 不会产生相同的结果,因此您不能进行简单的 &gt;/&lt; 字符串比较。

标签: javascript html datetime extjs ext.net


【解决方案1】:

以微秒为单位的时间。

if (!Date.now) {
  Date.now = function now() {
    return new Date().getTime();
  };
}

在计算后进行格式化。

您的lazyMethod_get() 工作原理是什么。它是返回一个字符串,还是一个 Date 对象。

【讨论】:

  • lazyMethod_get 返回一个字符串
  • 然后您尝试将字符串与日期对象进行比较。您可能需要var date=Date(string),具体取决于字符串的格式。您需要比较两个日期对象,这就是为什么在微秒内进行比较更容易,然后将输出转换为字符串进行显示。
  • var minutes = 1000 * 60; var hours = minutes * 60; var days = hours * 24; var years = days * 365; var d = new Date(); var t = d.getTime(); var y = Math.round(t / years); y = 46
  • 你的结果是 3 倍。Date.now 返回毫秒,而不是微秒。 ;-)
  • 公平调用 :-) 我的错误。
【解决方案2】:

当你这样做时:

new Date().toISOString().slice(0, 10);

toISOString 生成 UTC 日期(即时区偏移量为 00:00),因此它可能与主机系统的日期不同。

例如对于 5 月 25 日 09:30 时区 +10:00 的用户,上面将返回 5 月 24 日的日期字符串。同样,对于偏移量位于格林威治以西的系统,对于晚上的时间,日期将晚一天(例如,5 月 25 日的 20:30 时区 -04:00 将是 UTC 5 月 26 日的 00:30)。

【讨论】:

    【解决方案3】:

    首先 - Ext.NET DateField 仅返回日期 (MM-dd-yyyy) 而不是时间。时间始终默认为 12:00:00。

    我会比较每个的年、日和月。

    javascript:

        var isToday = function (field) {
            var fieldDate = field.getValue();
            var today = new Date()
    
    
            if ((today.getFullYear() + today.getMonth() + today.getDate())
                == (fieldDate.getFullYear() + fieldDate.getMonth() + fieldDate.getDate())) {
                return true;
            }
            else {
                return false;
            }
        }
    

    标记:

        <ext:DateField ID="DateField1" runat="server">
            <Listeners>
                <Select Handler="alert( isToday(#{DateField1}) )" />
            </Listeners>
        </ext:DateField>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-12
      • 2017-12-06
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多