我正在研究API,部分JSON输入是一些日期。我需要获取和存储的格式是ISO8601格式(例如2017-09-25T05:35:59 +00:00),根据W3,字符串格式应为YYYY-MM-DDThh:mm :ssTZD。 现在,我无法验证字符串格式。我尝试了两件事:
使用数据注释
[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; }
创建我自己的验证
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;
}}
在第一种情况下,它只返回表示格式无效的字符串。 在第二种情况下,我收到以下错误
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"
}