2015-07-10 86 views
1

我解析从银行存款报告的日期,格式是这样的:条件DateTime.ParseExact格式

Jul 9 2015 
Jun 20 2015 

基本上只是个位数一天不包含前导零MMM dd yyyyDateTime.ParseExact()中有条件格式化的简单方法吗?或者我将不得不预先处理日期字符串,并添加前导零或删除额外的空间?下面是一位数日的日期是什么在起作用:

Dim dtDepositDate As DateTime 
dtDepositDate = DateTime.ParseExact(strDate, "MMM d yyyy", CultureInfo.InvariantCulture) 

,显然,MMM dd yyyy为两位数的日期会工作,但不会为在两者之间具有额外空间的个位数的日期工作。

回答

2

对于单/双位数的日部分

使用单一d这是很好的单,双位数的日期值。

如果DateTime转换为string,那么具有单个d会影响值。至于解析而言,它会为单,双位数日期值工作,像0111120等,同样适用于MHm,说明符MonthHourMinutes

对于多个空格

对于多个空格解析使用DateTimeStyles.AllowWhiteSpaces

DateTime dt = DateTime.ParseExact("Jul 9 2015", "MMM d yyyy", 
           CultureInfo.InvariantCulture, 
           DateTimeStyles.AllowWhiteSpaces); 

或两位数日部分:

DateTime dt = DateTime.ParseExact("Jun 20 2015", "MMM d yyyy", 
           CultureInfo.InvariantCulture, 
           DateTimeStyles.AllowWhiteSpaces); 
+0

注意两个数字的日期没有多余的空间,在一个月名之间。这就是困境......“MMM dd yyyy”适用于一种情况,“MMM d yyyy”适用于其他情况,但两种都不适用。 –

+0

我想我可能只是做一个'strDate.Replace(“”,“”))来删除前导空格(如果适用)。这应该解决我的问题,我只是想知道是否有某种方式来处理这与字符串格式本身。 –

+0

@dubstylee,不只是修改我的答案。 – Habib