2011-03-03 81 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