2011-03-03 78 views
1

我想一个string转换成日期格式字符串转换为日期在ASP.Net

我的字符串看起来像

Dim MyString as String = "June 2011" 

和我想要将其转换这样

Convert.ToDateTime(MyString).ToString("MM yyyy") 

但它给我的错误

从 字符串转换datetime的语法错误。

期望的输出将是06/201101/06/2011。我的字符串的值只会有月份和年份。

任何想法?

+1

前面加上一天字符串的前面。您可以使用格式字符串来消除输出日期。 – slugster 2011-03-03 11:12:07

回答

6

在.NET DateTime对象表示一个单时间点。要从公历日期创建一个日历,需要全部三个部分(日,月,年),否则它不能代表一个单一时间点。

由于您的业务需求是假设日期编号为1(如果未提供),只需在解析之前将该编号插入字符串即可。

Dim myDate As Date = Convert.ToDateTime("1 " & MyString) 

编辑:

对不起,忘了提,字符串操作一样,当然是文化依赖性。您没有提及您所处的文化。"June 2011"可能暗示en-GBen-US。由于在字符串的起始处插入日期编号要比在月份和年份之间插入日期编号容易,所以我建议你去做这样的事情。

Dim myDate1 As Date = Date.Parse("1 " & myString, CultureInfo.GetCultureInfo("en-GB"), DateTimeStyles.AllowWhiteSpaces) 
+0

+1以获得比我的评论更完整的答案。 – slugster 2011-03-03 11:18:29

2

Convert.ToDateTime()只需要完整的日期,以便尝试前面加上01作为第一天即

Convert.ToDateTime( “01” + MyString的)

1
DateTime.Parse(MyString).ToString("MM yyyy") 
+0

这会给出同样的错误! – fretje 2011-03-03 11:20:24

+0

我测试了这个,它的工作原理。 – Cosmin 2011-03-03 11:21:28

+3

请参见[这里](http://msdn.microsoft.com/en-us/library/xhz1w05e.aspx):Convert.ToDateTime使用DateTimeFormatInfo对象中的格式化信息内部调用DateTime.Parse方法,该对象已初始化为目前的文化。所以如果这对你有用,它必定与当前的文化有关,而不是他使用Convert.ToDateTime而不是DateTime.Parse。 – fretje 2011-03-03 11:27:57

1

此转换之前为我工作

Dim provider As Globalization.CultureInfo = Globalization.CultureInfo.InvariantCulture 
    Dim MyString As String 

    Dim d As DateTime = DateTime.Now 'test start 

    'test all Month Year strings 
    For x As Integer = 1 To 12 
     MyString = d.ToString("MMMM yyyy") 'convert date to March 2011 then April 2011 then... 
     Dim dt As DateTime = DateTime.ParseExact(MyString, "MMMM yyyy", provider) 
     Debug.WriteLine(MyString & " " & dt.ToString) 
     d = d.AddMonths(1) 
    Next 
+0

ParseExact - 它允许我定义输入字符串的格式 – GlennG 2014-12-22 14:45:32