使用 TryParseExact 将 "August 2012" 转换为 DateTime 对象
Converting "August 2012" to DateTime object with TryParseExact
我正在尝试将 "August 2012" 格式的字符串解析为 DateTime 对象。该字符串来自 DataTable 中的列名。
string columnName= row[col].ToString(); // "August 2012"
最初我尝试使用 DateTime.TryParse() ...
bool result = DateTime.TryParse(row[col].ToString, out convertedDateTime);
但它一直返回错误。所以接下来我尝试使用 DateTime.TryParseExact 使用正确的 cultureformat here ...
CultureInfo enUS = new CultureInfo("af-ZA");
DateTime.TryParseExact(row[col].ToString(), "y", enUS, DateTimeStyles.None, out columnNameAsDate)
然而,这也一直返回错误。我究竟做错了什么?难道我不能将 August 2012 格式的字符串解析为 DateTime 对象吗?
这应该给你预期的日期。
string columnName= row[col].ToString(); // ==> August 2012
CultureInfo enUS = new CultureInfo("en-US");
DateTime.TryParseExact(columnName, "MMMM yyyy", enUS, DateTimeStyles.None, out columnNameAsDate);
首先:您应该指定确切的文化。在 af-ZA
文化中,一年中的第八个月被命名为 "Augustus" 而不是 "August",这当然会失败。
其次:您应该传递正确的格式规范以获得完整的月份名称 (MMMM) 和年份 (yyyy)。
我先拆分字符串:
DateTime outDate = new DateTime();
string[] words = columnName.Split(' ');
if(words.Length>1){
string month = words[0].Substring(0,3);
string year = words[1];
outDate = DateTime.ParseExact(month+' '+year,
"MMM yyyy", System.Globalization.CultureInfo.InvariantCulture);
}
我正在尝试将 "August 2012" 格式的字符串解析为 DateTime 对象。该字符串来自 DataTable 中的列名。
string columnName= row[col].ToString(); // "August 2012"
最初我尝试使用 DateTime.TryParse() ...
bool result = DateTime.TryParse(row[col].ToString, out convertedDateTime);
但它一直返回错误。所以接下来我尝试使用 DateTime.TryParseExact 使用正确的 cultureformat here ...
CultureInfo enUS = new CultureInfo("af-ZA");
DateTime.TryParseExact(row[col].ToString(), "y", enUS, DateTimeStyles.None, out columnNameAsDate)
然而,这也一直返回错误。我究竟做错了什么?难道我不能将 August 2012 格式的字符串解析为 DateTime 对象吗?
这应该给你预期的日期。
string columnName= row[col].ToString(); // ==> August 2012
CultureInfo enUS = new CultureInfo("en-US");
DateTime.TryParseExact(columnName, "MMMM yyyy", enUS, DateTimeStyles.None, out columnNameAsDate);
首先:您应该指定确切的文化。在 af-ZA
文化中,一年中的第八个月被命名为 "Augustus" 而不是 "August",这当然会失败。
其次:您应该传递正确的格式规范以获得完整的月份名称 (MMMM) 和年份 (yyyy)。
我先拆分字符串:
DateTime outDate = new DateTime();
string[] words = columnName.Split(' ');
if(words.Length>1){
string month = words[0].Substring(0,3);
string year = words[1];
outDate = DateTime.ParseExact(month+' '+year,
"MMM yyyy", System.Globalization.CultureInfo.InvariantCulture);
}