【发布时间】:2019-06-28 13:52:43
【问题描述】:
TLDR;
我需要验证给定的输入字符串是否是有效的“格式字符串”来解析 DateTime。例如,
-
yy-mm-dd有效 -
yy-aaaaaaa123无效
我正在开发一个program,它接受日期格式作为用户的输入。下面是我剥离出来的代码
private string datetimeFormat;
public Logger(string dateFormat)
{
datetimeFormat = dateFormat;
}
...
...
...
// Inside some function
string pretext = $"{DateTime.Now.ToString(datetimeFormat)},{logLevel},";
我需要为dateFormat 字符串输入添加验证。
我正在考虑在一个数组中有许多可能的组合并且只接受那些字符串。但是还有其他方法可以验证吗?
更新:
我的输入字符串不包含任何日期。这不是 specified question 的副本。
This question 根本与 DateTime 无关。
【问题讨论】:
-
技术上,
yy-aaaaaaa123是有效的:两位数年份后跟-aaaaaaa123;例如"98-aaaaaaa123"将被解析为1 Jan 1998 0:00:00 -
@KolappanNathan 在哪种情况下有效?如果您确切知道什么对您有效,则创建一个有效格式数组并使用
Contains,即if(validFormats.Contains(inputFormat))。 -
一些格式,如
dd-mm-yyyy,是有效,看起来不错,但错误:天-分钟-年。可能,您可能希望枚举合理的格式并让用户选择分隔符:dd-MM-yyyy、dd/MM/yyyy、dd.MM.yyyy等。 -
“我正在考虑在一个数组中有许多可能的组合并且只接受那些字符串。” - 这是正确的解决方案
-
你为什么允许用户指定他们的日期格式?只有几个标准的,它们得到了很好的支持。 ISO8601 的存在是有原因的。
标签: c# string validation string-formatting datetime-format