这是我第一次使用IFormatProvider
,我想知道如何传递要转换为日期的字符串参数。
private DateTime DateFormat(string date)
{
var value = data(param, parameter);
if (value!= null)
{
var val = value.ToString().Trim();
if(convert.ToDateTime(val) == null)
{
return null;
}
}
else
{
return convert.ToDateTime(val.ToString(date));
}
}
//I am getting error here
DateFormat("mm/dd/yy")
答案 0 :(得分:0)
已经有一种方法可以执行此操作:DateTime.ParseExact
像这样使用它:
var dateString = "11/06/18";
var date = DateTime.ParseExact(dateString, "MM/dd/yy", CultureInfo.CurrentCulture);
您还可以使用DateTime.Parse
,它将尝试找出您使用的格式。
var dateString = "11/06/18";
var date = DateTime.Parse(dateString);
DateTime.Parse
在大多数情况下都可以使用,除非您使用非常奇怪的格式。
答案 1 :(得分:0)
您已经可以使用DateTime.TryParse方法获得所需的内容,例如:
var usCulture=CultureInfo.GetCultureInfo("en-US");
DateTime.TryParse(@"11/13/2018", usCulture,DateTimeStyles.None,out var dt);
如果成功,将返回true并将结果放入dt
参数中。如果您想在解析失败时返回NULL(不是一个好主意),则可以编写:
var usCulture=CultureInfo.GetCultureInfo("en-US");
return DateTime.TryParse(@"11/13/2018", usCulture,DateTimeStyles.None,out var dt)
? dt
: (DateTime?)null;
您还可以使用CultureInfo.InvariantCulture
文化,因为它使用的是仅美国日期格式(奇怪,不是吗?)
return DateTime.TryParse(@"11/13/2018", CultureInfo.InvariantCulture, DateTimeStyles.None,
out var dt)
? dt
: (DateTime?)null;
所有基本类型都有一个Parse
,许多都有一个ParseExact
方法,该方法应用于解析。 Convert
类仅提供基于默认值和当前线程的区域性的基本解析功能。