我有以下字符串,我需要解析为日期。 2016年9月23日星期五 - 下午3点 - 晚上8点
我将它拆分为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点,因为我在其他地方处理它,因为它是一个范围。
提前致谢
答案 0 :(得分:2)
你太近了!
问题出在几个月:MMMM
用于拼写整月的名称(September
而不是Sept
)。缩写的月份名称(例如Sept
)使用MMM
只有3个M'
dddd, MMM dd, yyyy
答案 1 :(得分:1)
在撰写答案时,所有内容都出现在评论中(出于某种原因),但这是一个可以测试的工作版本:
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);