【问题标题】:ASP.NET MVC Datetime range [duplicate]ASP.NET MVC 日期时间范围 [重复]
【发布时间】:2014-03-09 18:54:34
【问题描述】:

我有一个日期时间输入字段,我想确保用户输入的日期至少比 Datetime.Now 晚 24 小时。我试过这个:

    [Range(typeof(DateTime), DateTime.Now.ToString(), DateTime.Now.AddDays(1).ToString())]
    public DateTime EndDate { get; set; }

但我收到编译器错误,因为值必须是常量。那我该怎么办?

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc datetime


    【解决方案1】:

    您需要一个自定义验证属性,以便您进行比较:

    [CustomValidation(typeof (Validator), "ValidateEndTimeRange")]
    public DateTime EndDate { get; set; }
    

    然后是你的实际验证者:

    namespace MyMVCApp
    {
        public class Validator
        {
            public static ValidationResult ValidateEndTimeRange(DateTime endTime)
            {
    
                if(endTime.EndDate < DateTime.Now || endTime.EndDate > DateTime.Now.AddDays(1)){
                    return new ValidationResult("Your end date is outside of the acceptable range.");
                }
    
                return ValidationResult.Success;
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      这是一些 JQuery 代码,我在其中获取两个日期字段之间的周数。输入格式为01/01/1990。这不完全是您所需要的,但如果您想验证客户端,它可以帮助您入门。

      var startDate = $("#startDate").val();
              var endDate = $("#endDate").val();
      
              var startDateSplit = startDate.split("/");
              var endDateSplit = endDate.split("/");
      
              var stDate = new Date(startDateSplit[2], (startDateSplit[0] - (1)), startDateSplit[1]);
              var enDate = new Date(endDateSplit[2], (endDateSplit[0] - (1)), endDateSplit[1]);
      
      
              var startMonth = parseInt(startDateSplit[0]);
              var endMonth = parseInt(endDateSplit[0]);
      
      
              var daysBetween = (enDate.getTime() - (stDate.getTime())) / (1000 * 60 * 60 * 24); // time in days
              var weeksBetween = Math.ceil(daysBetween / 7);
      

      【讨论】:

        猜你喜欢
        • 2018-03-03
        • 2019-03-19
        • 1970-01-01
        • 2017-04-23
        • 2023-04-07
        • 2023-01-10
        • 1970-01-01
        • 2013-12-27
        • 1970-01-01
        相关资源
        最近更新 更多