C# 将字符串解析为日期时间格式;“日、月、日、年”;
我需要将以下字符串解析为日期。 2016年9月23日星期五下午3点至8点 我在n-dash上拆分它,然后我需要使用格式字符串C# 将字符串解析为日期时间格式;“日、月、日、年”;,c#,datetime,C#,Datetime,我需要将以下字符串解析为日期。 2016年9月23日星期五下午3点至8点 我在n-dash上拆分它,然后我需要使用格式字符串ParseExact。我试过以下方法。 “dddd”、“MMMM dd”、“yyyy” “dddd,MMMM dd,yyyy” “dddd MMMM dd yyyy” “日、月、日、年” 我意识到这是类似的,如果不是确切的长期日期,但我需要非本地。 这是我制作并尝试使用的函数 public DateTime parseDate(string s, string dateSt
ParseExact
。我试过以下方法。
“dddd”、“MMMM dd”、“yyyy”
“dddd,MMMM dd,yyyy”
“dddd MMMM dd yyyy”
“日、月、日、年”
我意识到这是类似的,如果不是确切的长期日期,但我需要非本地。
这是我制作并尝试使用的函数
public DateTime parseDate(string s, string dateString)
{
var splitAr = s.Split((char)8211);
var dPart = new DateTime();
try
{
dPart = DateTime.ParseExact(splitAr[0].Trim(), dateString, CultureInfo.InvariantCulture);
}
catch (Exception e)
{
Trace.TraceWarning("Wasn't able to parse this date string so used try." + splitAr[0]);
DateTime.TryParse(splitAr[0].Trim(), out dPart);
}
var timeArray = splitAr[1].Split('-');
return d;
}
如果有人能看到这个问题,我是在从一个我刮过的网页上扯绳子
我试图把它简化为简单的。我这样称呼它
var result = objToTest.parseDate("Friday, Sept 23, 2016 – 3pm - 8pm", "dddd, MMMM dd, yyyy");
我只需要实际日期,而不是下午3点到8点,因为我在其他地方处理它,因为它是一个范围
在写答案时,提前感谢您(出于某种原因),评论中出现了所有内容,但这里有一个可以测试的工作版本:
var str = "Friday, Sept 23, 2016 – 3pm - 8pm";
var cultureInfo = new CultureInfo("en-US");
cultureInfo.DateTimeFormat.AbbreviatedMonthNames = new[]
{ "Jan", "Feb", "Mar",
"Apr", "May", "Jun",
"Jul", "Aug", "Sept",
"Oct", "Nov", "Dec", "" };
var result = DateTime.ParseExact(str.Split('–').First().Trim(), "dddd, MMM dd, yyyy", cultureInfo);
在写答案时,所有内容都出现在评论中(出于某种原因),但这里有一个可以测试的工作版本:
var str = "Friday, Sept 23, 2016 – 3pm - 8pm";
var cultureInfo = new CultureInfo("en-US");
cultureInfo.DateTimeFormat.AbbreviatedMonthNames = new[]
{ "Jan", "Feb", "Mar",
"Apr", "May", "Jun",
"Jul", "Aug", "Sept",
"Oct", "Nov", "Dec", "" };
var result = DateTime.ParseExact(str.Split('–').First().Trim(), "dddd, MMM dd, yyyy", cultureInfo);
你太接近了
问题是月份:MMMM
用于拼写整个月份的名称(Sept
而不是Sept
)。缩写月份名称,如Sept
使用MMM
,只有3个M:
dddd, MMM dd, yyyy
你离得太近了
问题是月份:MMMM
用于拼写整个月份的名称(Sept
而不是Sept
)。缩写月份名称,如Sept
使用MMM
,只有3个M:
dddd, MMM dd, yyyy
如果您跳过日期名称和时间值,删除逗号并解析剩下的日期,您会发现更容易。在您的示例中,这将是2016年9月23日。您可能会发现四个字母的月份缩写是一个问题,因为它不是中预期的缩写。替换为完整的月份名称可以解决这个问题。正如@stuartd所建议的,您无法分析日期的原因是因为您的字符串包含4个字符的月份缩写(
Sept
)。您必须提供3个字符的月份缩写。(请注意,Sept
可能是某些地区的有效缩写。换句话说,如果您使用不同的CultureInfo
,其中Sept
是一个有效的缩写,那么您的代码可能会起作用)为什么不将答案作为答案发布?如果您跳过日期名称和时间值,您会发现更容易,删除逗号并解析剩下的日期。在您的示例中,这将是2016年9月23日。您可能会发现四个字母的月份缩写是一个问题,因为它不是中预期的缩写。替换为完整的月份名称可以解决这个问题。正如@stuartd所建议的,您无法分析日期的原因是因为您的字符串包含4个字符的月份缩写(Sept
)。您必须提供3个字符的月份缩写。(请注意,Sept
可能是某些地区的有效缩写。换句话说,如果您使用不同的CultureInfo
,其中Sept
是一个有效的缩写,您的代码可能会起作用)为什么不将答案作为答案发布?非常感谢,这非常有效。尽管我必须问为什么数组中有第13个元素。我甚至没有想到4个字符的缩写。不幸的是,我不能控制输入。有没有一种合适的方法可以同时包含3个字母和4个字母的缩写?或者我需要做两次单独的CultureInfo并尝试两次解析吗?很抱歉,如果这些问题不应该出现在这里。很抱歉,忽略13个元素的问题,因为我终于找到了正确的文档。非常感谢,这非常有效。尽管我必须问为什么数组中有第13个元素。我甚至没有想到4个字符的缩写。不幸的是,我不能控制输入。有没有一种合适的方法可以同时包含3个字母和4个字母的缩写?或者我需要做两次单独的CultureInfo并尝试两次解析吗?抱歉,如果这些问题不应该出现在这里。抱歉,忽略13个元素的问题,因为我终于找到了正确的文档。由于我使用的是4个字符的Sept缩写,因此仍然不起作用。抱歉,除非您能给我一个原因,让我将其作为答案,否则我不会更改它。另一个答案既包括这一点,也包括对4个字符缩写的修复。这涵盖了1米到多米的问题,这意味着代码仍然不起作用。由于我使用的是4个字符的Sept缩写,这仍然不起作用。抱歉,除非你能给我一个原因作为答案,否则我不会更改它。另一个答案既包括这一点,也包括对4个字符缩写的修复。这涵盖了1米到多米的问题,这意味着代码仍然无法工作。