i need to convert strings to date format. the requirement is if current month is selected, the date should be getdate. if any other month is selected then it should be first of
DateTime.ParseExact should be able to help you out in VB.Net
You could use this function:
Private Function GetDate(ByVal source As String) As DateTime
Dim converted = DateTime.Parse(source)
If (converted.Year.Equals(DateTime.Now.Year) And converted.Month.Equals(DateTime.Now.Month)) Then
GetDate = DateTime.Now
Else
GetDate = converted
End If
End Function
it could analysed passed month + year values like "April 2010".
I think the following should do the job for you:
Dim theDate As DateTime = DateTime.ParseExact(input, "MMMM yyyy", CultureInfo.InvariantCulture)
The InvariantCulture
makes sure that the month names can be parsed correctly.
DateTime.ParseExact Method (String, String, IFormatProvider)
DateTime dt = DateTime.ParseExact(dateString,formatString);
dt = (dt.Month == DateTime.Now.Month) ? DateTime.Now : dt;
If your calling this alot in a loop performance may be better if you only call DateTime.Now once and store it in a variable before comparison, since DateTime.Now is a fairly expensive operation.
If the SQL server column is of type DateTime then you don't need to worry about the format, jut pass the DateTime object and it will work.