自定义工作日日期验证需要实现或识别区域性

本文关键字:实现 识别 区域性 工作日 日期 验证 自定义 | 更新日期: 2023-09-27 18:09:49

这个在某种程度上类似于我昨天的问题,因为它涉及到浏览器的Date类型的格式和格式化。

日期验证允许无效日期

我正在掌握jQuery, JavascriptMVC,这可能是为什么我不断地打砖墙,因为我不明白下一步该做什么。我正在创建一个简单的假期请求应用程序。请求日期必须是工作日。

我昨天完成了这个,这是我的东西。

public class WeekdayAttribute : ValidationAttribute, IClientValidatable
{
  public override bool IsValid(object value)
  {
    DateTime dt;
    if (DateTime.TryParse(value.ToString(), out dt))
      return dt.DayOfWeek != DayOfWeek.Saturday && dt.DayOfWeek != DayOfWeek.Sunday;
    else
      return false;
  }
  public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
  {
    yield return new ModelClientValidationRule()
    {
      ErrorMessage = ErrorMessage,
      ValidationType = "weekdaydate"
    };
  }
}

然后在jQuery.validate.unobtrusive

中有以下内容
$jQval.addMethod("weekdaydate", function(value, element, params) {
  var day = new Date(value).getDay();
  return day != 0 && day != 6;
});

这个功能工作得很好,因为如果我输入一个无效的US日期,它将很好地验证并显示一条消息。然而,它忽略了我的机器和浏览器是UK,类似于我之前问题中的验证(似乎只允许*/*/*,其中*是一个数字)。

我的问题是,有没有办法强迫我的日期是UK格式横跨整个MVC网站?如何强制UK格式?

自定义工作日日期验证需要实现或识别区域性

@jbl's评论是一个伟大的呼喊。我修改了jquery.validation.js中的date验证如下:

$jQval.addMethod("weekdaydate", function(value, element, params) {
  var day = new moment(value, "DD-MM-YYYY").day();
  return day != 0 && day != 6;
});