繁体   English   中英

F# - 解析日期

[英]F# - Parse dates

关于在F#中解析日期的非常基本的问题。 我是F#和.NET的新手,所以请耐心等待。

我的日期格式为yyyyMMDD20100503

如何将其解析为F#中的DateTime类型。

我试过System.DateTime.Parse("20100503"); 但得到一个错误。

如何将格式字符串传递给Parse方法?

答案是 - 感谢大家的回复。

let d = System.DateTime.ParseExact("20100503", "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);

您应该能够使用自定义格式字符串。 试试这个:

System.DateTime.ParseExact("20100503", "yyyymmdd", null);;

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

DateTime.ParseExact("20100503", "yyyyMMdd", CultureInfo.CurrentCulture)

使用ParseExact方法并使用小写d代替upper。

我今天早上回答了类似的问题 我没有使用过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.
}

格式不是被接受的格式。

http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

您可能需要在解析之前操作字符串。

你是在正确的轨道上。

您需要使用带有IFormatProvider的DateTime.Parse的重载。 您提供的IFormatProvider必须了解该格式。

您可以通过使用正在为要解析的日期字符串的正确格式创建DateTimeFormatInfo对象来执行此操作。

对于你正在做的事情,这可能是很多工作。 如果你可以先重新组织字符串(最有可能是一个带分隔符的日期字符串),你可能会更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM