我有以下字符串,我需要解析为日期。 2016年9月23日星期五下午3点 - 晚上8点解析字符串为日期时间格式“日,月dat,年”
我在n-dash上分割它,然后我需要使用格式字符串ParseExact
。我已经尝试了以下。 “DDDD '' MMMM DD '' YYYY” “DDDD,MMMM DD,YYYY” “dddd完整MMMM DD YYYY” “DDD,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点,因为我已经在其他地方处理它,因为它是一个范围。提前
如果你跳过国庆节的名称以及时间值,去掉逗号和解析什么是离开的日期,你会发现它更容易。在你的例子中将是'2016年9月23日'。您可能会发现四个字母的月份缩写是一个问题,因为它不是[DateTimeFormatInfo.AbbreviatedMonthNames](https://msdn.microsoft.com/zh-cn/library/system.globalization.datetimeformatinfo中的预期缩写。 AbbreviatedMonthNames中(v = vs.110)的.aspx)。用整个月份名称代替将解决此问题。 – stuartd
正如@stuartd所建议的那样,你不能解析日期的原因是因为你的字符串包含一个4个字符的月份缩写('Sept')。您必须提供3个字符的月份缩写。 (注意''Sept''应该是某些语言环境的有效缩写,换句话说,如果你使用不同的'CultureInfo',你的代码_may_可以工作,其中'Sept'是一个有效的缩写] – Serge
你为什么不发表回答作为答案? –