views:

832

answers:

4

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 that month. the data coming in is "January 2010", "February 2010" and so on. but it should be inserted into sql server database as 01/01/10 or 02/01/10

+1  A: 

DateTime.ParseExact should be able to help you out in VB.Net

Kyle
A: 

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.

Paul Creasey
A: 

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.

Fredrik Mörk
how do i declare cultureinfo? it says cultureinfo not declared
sinae
@sinae: add `Imports System.Globalization` to the imports statements in the beginning of the file.
Fredrik Mörk
+2  A: 

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".

Jojo Sardez