关于在F#中解析日期的非常基本的问题。我是F#和.NET的新手,所以请耐心等待。
我的约会日期格式yyyyMMDD
,如20100503
。
如何将其解析为F#中的DateTime
类型。
我尝试了System.DateTime.Parse("20100503");
,但收到错误。
如何将格式字符串传递给Parse方法?
答案是 - 感谢大家的回复。
let d = System.DateTime.ParseExact("20100503", "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
答案 0 :(得分:8)
您应该能够使用自定义格式字符串。试试这个:
System.DateTime.ParseExact("20100503", "yyyymmdd", null);;
有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx。
答案 1 :(得分:3)
DateTime.ParseExact("20100503", "yyyyMMdd", CultureInfo.CurrentCulture)
使用ParseExact方法并使用小写d代替upper。
答案 2 :(得分:2)
今天早上我回答了similar question。我没有使用过F#,但是如果你有权访问DateTime.ParseExact,我的回答可能对你有帮助。
您也可以考虑使用TryParseExact,以便根据返回false的函数捕获失败,而不必将其放在try catch中:
//Using code example from my previous answer...
string s = "100714 0700";
DateTime d;
if (!DateTime.TryParseExact(s, "yyMMdd hhmm", CultureInfo.InvariantCulture, out d))
{
// Whoops! Something is wrong with the date.
}
//In your case
string s = "20100503";
DateTime d;
if (!DateTime.TryParseExact(s, "yyyyMMdd", CultureInfo.InvariantCulture, out d))
{
// Whoops! Something is wrong with the date.
}
答案 3 :(得分:0)
答案 4 :(得分:0)
你需要使用带有IFormatProvider的DateTime.Parse的重载。您提供的IFormatProvider必须了解该格式。
您可以通过使用正在进行解析的日期字符串的正确格式创建DateTimeFormatInfo对象来完成此操作。
对于你正在做的事情,这可能是很多工作。如果你可以先重新组织字符串(最有可能是带分隔符的日期字符串),你可能会更好。