字符串到日期时间?扩展转换.或者更好的东西
本文关键字:更好 或者 转换 扩展 日期 时间 字符串 | 更新日期: 2023-09-27 18:19:19
希望我没有重新创建已经被询问了1000次的东西,但是由于'?'-s,搜索它很困难。
我想在日期时间转换字符串?在c#。还有什么比这更简洁的方法呢?
private static DateTime? toDate(string probDate)
{
if (probDate == null) { return null; }
else { return Convert.ToDateTime(probDate); }
}
提前感谢,
哈里private static DateTime? toDate(string probDate)
{
if (!string.IsNullOrWhiteSpace(probDate)) {
DateTime converted;
if (DateTime.TryParse(probDate, out converted))
{
return converted;
}
}
return null;
}
视情况而定。如果无法转换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
,但这是另一回事。
你还没有真正解释这里更大的画面是什么——文本是从哪里来的?它有期望的格式吗?你需要对文化敏感吗?如果无法解析文本,您希望发生什么?
我会使用扩展方法(如果你是在。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();
}
}
static class Program
{
//Extension method for string
public static DateTime? ToNullableDate(this string text)
{
return string.IsNullOrEmpty(text) ? (DateTime?)null : Convert.ToDateTime(text);
}
static void Main()
{
string s = null;
DateTime? d = s.ToNullableDate();
s = "1/1/2012";
d = s.ToNullableDate();
}
}