<PackageReference Include="NJsonSchema" Version="10.3.4" />

DateTimeFormatValidator

Validator for DateTime format.
using Newtonsoft.Json.Linq; using System; using System.Globalization; namespace NJsonSchema.Validation.FormatValidators { public class DateTimeFormatValidator : IFormatValidator { private readonly string[] _acceptableFormats = new string[15] { "yyyy-MM-dd'T'HH:mm:ss.FFFFFFFK", "yyyy-MM-dd' 'HH:mm:ss.FFFFFFFK", "yyyy-MM-dd'T'HH:mm:ssK", "yyyy-MM-dd' 'HH:mm:ssK", "yyyy-MM-dd'T'HH:mm:ss", "yyyy-MM-dd' 'HH:mm:ss", "yyyy-MM-dd'T'HH:mm", "yyyy-MM-dd' 'HH:mm", "yyyy-MM-dd'T'HH", "yyyy-MM-dd' 'HH", "yyyy-MM-dd", "yyyy-MM-dd", "yyyyMMdd", "yyyy-MM", "yyyy" }; public string Format { get; } = "date-time"; public ValidationErrorKind ValidationErrorKind { get; } = ValidationErrorKind.DateTimeExpected; public bool IsValid(string value, JTokenType tokenType) { DateTimeOffset result; DateTimeOffset result; if (tokenType != JTokenType.Date) return DateTimeOffset.TryParseExact(value, _acceptableFormats, CultureInfo.InvariantCulture, DateTimeStyles.None, out result); return true; } } } namespace NJsonSchema.Validation.FormatValidators { public class HostnameFormatValidator : IFormatValidator { private const string HostnameExpression = "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$"; public string Format { get; } = "hostname"; public ValidationErrorKind ValidationErrorKind { get; } = ValidationErrorKind.HostnameExpected; public bool IsValid(string value, JTokenType tokenType) { return System.Text.RegularExpressions.Regex.IsMatch(value, "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$", System.Text.RegularExpressions.RegexOptions.IgnoreCase); } } }