无法验证 ISO 8601 日期格式的日期字符串
Unable to validate a date string in ISO 8601 date format
在asp.net中Date.Now
生成一个完整的日期字符串:
例如 "2018-01-17T11:12:42.0544453+00:00"
我无法使用以下格式验证此日期字符串。
谁能建议合适的验证格式?
Dim formats() As String = {
"yyyy-MM-dd",
"yyyy-MM-ddTHH:mm:ss",
"yyyy-MM-ddTHH:mm:ss.fff",
"yyyy-mm-ddThh:mm:ss.ffffff",
"yyyy-mm-ddThh:mm:ss.fffffffZ",
"yyyy-mm-ddThh:mm:ss.nnnnnnn",
"yyyy-mm-ddThh:mm:ss.nnnnnnnZ",
"yyyy-mm-ddThh:mm:ss.nnnnnnn+|-hh:mm"
}
If Date.TryParseExact("2018-01-17T11:12:42.0544453+00:00", formats, CultureInfo.InvariantCulture, DateTimeStyles.None, dt) Then
//Success
End If
I want to ensure the date is a valid ISO 8601 date format. This can be
true even when time/fractions/timeszones are omitted.
您可以使用 "O"(Round-trip) format specifier
Dim time = "2018-01-17T11:12:42.0544453+00:00"
Dim validDate = Date.TryParseExact(time, "O", CultureInfo.InvariantCulture, DateTimeStyles.None, dt)
The "O" or "o" standard format specifier represents a custom date and
time format string using a pattern that preserves time zone
information and emits a result string that complies with ISO 8601. For
DateTime
values, this format specifier is designed to preserve date
and time values along with the DateTime.Kind
property in text. ...
旁注:对我来说 Date.Now.ToString
没有 return 这种格式的字符串。也许你用过:
Dim time = Date.UtcNow.ToString("o", System.Globalization.CultureInfo.InvariantCulture)
在asp.net中Date.Now
生成一个完整的日期字符串:
例如 "2018-01-17T11:12:42.0544453+00:00"
我无法使用以下格式验证此日期字符串。 谁能建议合适的验证格式?
Dim formats() As String = {
"yyyy-MM-dd",
"yyyy-MM-ddTHH:mm:ss",
"yyyy-MM-ddTHH:mm:ss.fff",
"yyyy-mm-ddThh:mm:ss.ffffff",
"yyyy-mm-ddThh:mm:ss.fffffffZ",
"yyyy-mm-ddThh:mm:ss.nnnnnnn",
"yyyy-mm-ddThh:mm:ss.nnnnnnnZ",
"yyyy-mm-ddThh:mm:ss.nnnnnnn+|-hh:mm"
}
If Date.TryParseExact("2018-01-17T11:12:42.0544453+00:00", formats, CultureInfo.InvariantCulture, DateTimeStyles.None, dt) Then
//Success
End If
I want to ensure the date is a valid ISO 8601 date format. This can be true even when time/fractions/timeszones are omitted.
您可以使用 "O"(Round-trip) format specifier
Dim time = "2018-01-17T11:12:42.0544453+00:00"
Dim validDate = Date.TryParseExact(time, "O", CultureInfo.InvariantCulture, DateTimeStyles.None, dt)
The "O" or "o" standard format specifier represents a custom date and time format string using a pattern that preserves time zone information and emits a result string that complies with ISO 8601. For
DateTime
values, this format specifier is designed to preserve date and time values along with theDateTime.Kind
property in text. ...
旁注:对我来说 Date.Now.ToString
没有 return 这种格式的字符串。也许你用过:
Dim time = Date.UtcNow.ToString("o", System.Globalization.CultureInfo.InvariantCulture)