C# 字符串到日期时间?扩展Convert.*或更好的东西
希望我没有重新创建一些已经被问了1000次的问题,但是因为“?”-s,搜索它很困难 我想在Datetime中转换字符串?在c#中。 除此之外,还有什么更干净的方法可以做到这一点:C# 字符串到日期时间?扩展Convert.*或更好的东西,c#,asp.net,datetime,C#,Asp.net,Datetime,希望我没有重新创建一些已经被问了1000次的问题,但是因为“?”-s,搜索它很困难 我想在Datetime中转换字符串?在c#中。 除此之外,还有什么更干净的方法可以做到这一点: private static DateTime? toDate(string probDate) { if (probDate == null) { return null; } else { return Convert.ToDateTime(probDate); }
private static DateTime? toDate(string probDate)
{
if (probDate == null) { return null; }
else { return Convert.ToDateTime(probDate); }
}
提前感谢,
哈利
视情况而定。如果probDate无法转换,您希望发生什么?该方法应该返回null还是引发异常
对评论的回应#1
因为您的方法签名是私有的,所以我假设这只是一个特定类的静态助手方法。如果这是您希望在整个应用程序中重用的内容,我将创建一个扩展方法:
public static class StringExtensions
{
public static DateTime? ToDate(this string probDate)
{
// same code as above
}
}
然后,您可以这样执行它:
string probDate = "1/4/2012";
DateTime? toDate = probDate.ToDate();
视情况而定。如果probDate无法转换,您希望发生什么?该方法应该返回null还是引发异常
对评论的回应#1
因为您的方法签名是私有的,所以我假设这只是一个特定类的静态助手方法。如果这是您希望在整个应用程序中重用的内容,我将创建一个扩展方法:
public static class StringExtensions
{
public static DateTime? ToDate(this string probDate)
{
// same code as above
}
}
然后,您可以这样执行它:
string probDate = "1/4/2012";
DateTime? toDate = probDate.ToDate();
你至少可以使用一个条件:
private static DateTime? ToDate(string text)
{
return text == null ? (DateTime?) null : Convert.ToDateTime(text);
}
就我个人而言,我可能会使用DateTime.ParseExact
和预期的格式,而不是Convert.ToDateTime
,但这是另一回事
你还没有真正解释这里的大图是什么-文本来自哪里?它是否具有预期的格式?你需要对文化敏感吗?如果无法解析文本,您希望发生什么情况?您至少可以使用条件:
private static DateTime? ToDate(string text)
{
return text == null ? (DateTime?) null : Convert.ToDateTime(text);
}
就我个人而言,我可能会使用DateTime.ParseExact
和预期的格式,而不是Convert.ToDateTime
,但这是另一回事
你还没有真正解释这里的大图是什么-文本来自哪里?它是否具有预期的格式?你需要对文化敏感吗?如果无法解析文本,您希望发生什么情况?我会使用方法(如果您使用的是.Net 3.5+)。它非常优雅,而且可以重复使用
像这样:
public static class Extensions
{
public static DateTime? ToNullableDate(this String dateString)
{
if (String.IsNullOrEmpty((dateString ?? "").Trim()))
return null;
DateTime resultDate;
if(DateTime.TryParse(dateString, out resultDate))
return resultDate;
return null;
}
}
public class Test
{
public Test()
{
string dateString = null;
DateTime? nullableDate = dateString.ToNullableDate();
}
}
我会使用方法(如果您使用的是.NET3.5+)。它非常优雅,而且可以重复使用
像这样:
public static class Extensions
{
public static DateTime? ToNullableDate(this String dateString)
{
if (String.IsNullOrEmpty((dateString ?? "").Trim()))
return null;
DateTime resultDate;
if(DateTime.TryParse(dateString, out resultDate))
return resultDate;
return null;
}
}
public class Test
{
public Test()
{
string dateString = null;
DateTime? nullableDate = dateString.ToNullableDate();
}
}
在C#中没有
string?
这样的东西,因为string
是一种引用类型,因此已经可以为空。你是对的,很抱歉输入错误。在C#中没有string?
这样的东西,因为string
是一种引用类型,因此已经可以为空。你是对的,很抱歉输入错误。如果设置了probDate,默认情况下,它可以转换,因为它是一个系统集变量。与其说是这个细节的问题,不如说是在何处实现这个新函数:它在某种程度上“Convert”或其他什么东西有意义吗?如果设置了probDate,它可以在默认情况下被转换,因为它是一个系统设置变量。与其说是这个细节的问题,不如说是在哪里实现这个新功能:它在某种程度上“转换”或其他什么东西有意义吗?这正是我要找的东西!扩展字符串看起来是合法的,那么Convert呢?据我所知,您不能扩展Convert,因为它是一个静态类。我会坚持延长字符串。这正是我要找的东西!扩展字符串看起来是合法的,那么Convert呢?据我所知,您不能扩展Convert,因为它是一个静态类。我会坚持用延长线。