c# - c#直接等价于VB IsDate()
问题描述
我有一个“简单”的要求——快速检查一个对象是否有效DateTime
,如果不是,返回一个已知的默认日期。
有许多替代解决方案:
- 通过添加对 VB 库的引用直接使用 VB 函数 - 简单但在解决方案中添加额外的库感觉像臃肿
- 使用
DateTime.TryParse()
- 需要先转换为object
,string
不需要结果 try catch
挡住Convert.ToDateTime()
- 感觉笨拙但简单
它们各有优缺点,而且都有开销——错过了一个更简单的解决方案
解决方案
使用is
运算符:
Object foo = new DateTime();
if( foo is DateTime dt )
{
Console.WriteLine( "The date is: {0:yyyy-MM-dd}", dt );
return dt;
}
else
{
return someDefaultDate;
}
如果您希望与 VB 的函数具有相同的行为,请在检查结果为 falseIsDate
时添加调用:DateTime.TryParse
is DateTime
static DateTime GetDateOrDefault( Object o, DateTime defaultValue )
{
if( o is DateTime dt )
{
return dt;
}
else if( DateTime.TryParse( o?.ToString(), out dt ) )
{
return dt;
}
else
{
return defaultValue;
}
}
推荐阅读
- javascript - jQuery记住列表中的toggleClass状态
- python-3.x - 将 pandas 数据帧写入 Azure Blob - Python sdk
- php - Codeigniter 文件夹结构中的错误...您的应用程序文件夹路径似乎设置不正确
- macos - macOS 11.4 Beta 阻止网站在明显有效的证书上显示无效证书
- dataset - 如何减去SPSS中相同变量列中的值?
- elasticsearch - 有没有办法在弹性搜索中找出传入http请求的总数?
- c# - ProgressBar Marquee 没有动画
- python - C# 中是否有 .isConnected 功能的 python 等效项
- web - Google 网站和 DNS 设置
- javascript - 使按钮对元素执行多项操作的 Javascript