C# 比较字符串包含所有数字和比较日期
我有一个格式为“YYYYMMDD\u NNN”的字符串值。除\外,所有都是整数。我必须验证这个字符串值C# 比较字符串包含所有数字和比较日期,c#,.net,C#,.net,我有一个格式为“YYYYMMDD\u NNN”的字符串值。除\外,所有都是整数。我必须验证这个字符串值 验证所有是否为整数,除非_ 日期值不应大于今天的日期 格式应该相同,前8个是数字,后3个是数字 这是我写的。有没有更好的方法来改进它或简化版本 string strDate = _htfdate.Substring(0, 8); if (int.TryParse(strHtfDate, out _)) { //ok, do something DateTime dt1;
string strDate = _htfdate.Substring(0, 8);
if (int.TryParse(strHtfDate, out _))
{
//ok, do something
DateTime dt1;
if(DateTime.TryParse(strHtfDate, out dt1))
{
if (dt1 > DateTime.Today)
//do something
}
}
else
{
//not an int
}
我没有在这里编写验证最后3个字符的代码 您可以简单地尝试一下:看起来最后三个与日期无关,但如果它们是百分之一秒,解析仍然可以发生
string datestring = "20190519_562";
//check first 8 characters are digit
var rsult = datestring.Take(8).All(char.IsDigit);
if(rsult == true)
{
// get last three characters of string
string dtst= datestring.Substring(datestring.Length - 4);
if(dtst[0]== '_') // check first character is "_"
{
int length = dtst.Substring(1).Length; // get length of character after "_"
if(length==3)
{
enter code here
}
}
}
var dateTimeString = "20181230_183";
DateTimeOffset dto;
if (DateTimeOffset.TryParseExact(dateTimeString, "yyyyMMdd_fff",
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal |
DateTimeStyles.AdjustToUniversal, out dto))
{
Console.WriteLine(dto.ToString("yyyyMMdd")); // prints 20181230
Console.WriteLine(dto.ToString("fff")); // prints 183
}
似乎您应该首先使用
Regex
例如var-validPattern=@“\d{8}.\d{3}”
,然后使用DateTime.TryParseExact(\u-htfdate.Substring(0,8),“yyyyyymmdd”)
。这个Regex模式还会检查吗?是的,只需将其更改为var-validPattern=@“\d{8}\d{3}”它会的。模式有
来表示任何字符。如果输入中的下划线是字面意思,则可以将
替换为.
。日期的最后三部分是秒还是数字