检查datetime是否有效的方法
本文关键字:方法 有效 是否 datetime 检查 | 更新日期: 2023-09-27 18:05:33
我在SO中搜索,但未能找到适合我的响应。
我在c#中有一个dateTime值,我想检查它是否有一个有效值。例如,如果下面的值传递给datetimeupdate(它是dateTime类型的),我应该能够抛出一个异常。
datetimeupdate= 2015-07-29T19:55:10.994sdfsdf
我尝试使用Tryparse,但它接受字符串作为第一个参数。但是datetimeupdate参数的类型是datetime。我不知道如何检查参数是否有有效值。
我不能做前端验证,因为这是在WebAPI中,这是我得到的值(无效字符)
你有一个日期时间的字符串表示。您可以像下面这样使用TryParse()
方法;如果解析成功,将返回TRUE
。
static void Main(string[] args)
{
string str = "2015-07-29T19:55:10.994sdfsdf";
Console.WriteLine(IsvalidDateTime(str));
}
static bool IsvalidDateTime(string date)
{
DateTime dt;
return DateTime.TryParse(date, out dt);
}
using System;
public class Program
{
public static void Main()
{
try
{
string d = "2015-07-29T19:55:10.994sdfsdf";
DateTime dt = Convert.ToDateTime(d);
Console.WriteLine(dt);
}
catch(FormatException)
{
Console.WriteLine(" Date is InValid ");
}
}
}
DateTime
格式在不同国家/地区之间相当广泛。例如,在瑞典这里,我们遵循ISO 8601
格式—yyyy-MM-dd
。在美国,标准格式是M/d yyyy
对于日期的"有效性";这很难说。
有人可能会把这个日期描述为2015-07-29T19:55:10.994sdfsdf
。如果你的程序可以处理(和解析)输入,它可能是有效的。
最简单的解决方案是使用DateTime.Parse
或DateTime.TryParseExact
(如果你知道你的日期是什么格式)
string dateString = "2015-07-30 18:00:00.142"
string dateFormat = "yyyy-MM-dd HH:mm:ss.fff"
DateTime parsedDate;
bool parseSuccess = DateTime.TryParseExact(
s: dateString,
format: dateFormat,
provider: CultureInfo.CurrentCulture,
style: DateTimeStyles.None,
result: out parsedDate
);
if (parseSuccess)
{
// valid
}
else
{
// not valid
}
如果DateTime
的字符串表示格式未知,则可以使用DateTime.Parse
或DateTime.TryParse
。
string dateString = "2015-07-30 18:00:00.142"
DateTime parsedDate;
if (DateTime.TryParse(dateString, out parsedDate))
{
// valid
}
else
{
// not valid
}
然而,尽管使用非常广泛—这并不能保证解析出"正确"的日期,因为最终用户可能以不同于预期的格式输入了日期。最后你可能会用小时来代替月;这可能会产生一些意想不到的后果。
一些阅读
- 自定义DateTime-formats。
- DateTime。TryParse
- DateTime。TryParseExact