我正在尝试将string
转换为日期格式
我的字符串看起来像这样
Dim MyString as String = "June 2011"
而我正试图像这样转换它
Convert.ToDateTime(MyString).ToString("MM yyyy")
但它给了我错误
语法错误转换日期时间 字符串。
所需的输出可以是06/2011
或01/06/2011
。我的字符串的值只会包含月份和年份。
有什么想法吗?
答案 0 :(得分:6)
.NET中的datetime对象代表一个单一的时间点。要从公历日期创建一个,您需要所有三个部分(日,月,年),否则它不能代表一个单一的时间点。
由于您的业务要求是假设未提供的天数为1,只需在解析之前将该数字插入字符串。
Dim myDate As Date = Convert.ToDateTime("1 " & MyString)
修改强>
很抱歉,忘记提及像这样的字符串操作当然是文化依赖的。你没有提到你所处的文化。"June 2011"
可以暗示en-GB
或en-US
。由于在字符串的开头插入日期编号比在月份和年份之间插入日期编号更容易,我建议您选择这样的内容。
Dim myDate1 As Date = Date.Parse("1 " & myString, CultureInfo.GetCultureInfo("en-GB"), DateTimeStyles.AllowWhiteSpaces)
答案 1 :(得分:2)
Convert.ToDateTime()只需要完整的日期,所以请先尝试01作为第一天,即
。Convert.ToDateTime(“01”+ MyString)
答案 2 :(得分:1)
DateTime.Parse(MyString).ToString("MM yyyy")
答案 3 :(得分: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