DateTime格式检查ASP.NET

时间:2017-10-03 12:43:00

标签: c# asp.net json datetime

我正在研究API,部分JSON输入是一些日期。我需要获取和存储的格式是ISO8601格式(例如2017-09-25T05:35:59 +00:00),根据W3,字符串格式应为YYYY-MM-DDThh:mm :ssTZD。 现在,我无法验证字符串格式。我尝试了两件事:

  1. 使用数据注释

    [Required]
    [RegularExpression("YYYY-MM-DDThh:mm:ssTZD", ErrorMessage = "The date time provided does not match the ISO8601 standard YYYY-MM-DDThh:mm:ssTZD")]
    public DateTimeOffset StartValidation { get; set; }
    
  2. 创建我自己的验证

    public class DateTimeFormatValidation: ValidationAttribute{
    
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        //check if the object is null or empty
       if (value ==null)
            return new ValidationResult("The date time cannot be null");
    
        DateTimeOffset dateTime = value as DateTimeOffset? ?? new DateTimeOffset();
    
      if (!DateTimeOffset.TryParseExact(value.ToString(), "YYYY-MM-DDThh:mm:ssTZD",
    CultureInfo.CurrentCulture, DateTimeStyles.AllowInnerWhite, out dateTime))
           return new ValidationResult("Wrong date time format" + value);
    
      return null;
    
    }}
    
  3. 在第一种情况下,它只返回表示格式无效的字符串。 在第二种情况下,我收到以下错误

        Wrong date time format 9/25/2017 5:35:59 AM +00:00
    

    我也查看了DateTimeStyles并且可能更改了分隔符,但我不确定是不是这样。

    JSON输入:

        "period": {
            "startHistory": "2017-09-25T05:35:59+00:00",
            "startValidation": "2017-09-25T05:35:59+00:00",
            "endValidation": "2017-09-25T05:35:59:+00:00"
        }
    

0 个答案:

没有答案