views:

55

answers:

4

I have a large set (100+ million) of observations with the date represented as a custom string format. We did not generate the date strings, I just need to convert the date string to a datetime type.

How do I convert a string date (eg, 12 JUN 2010) to a datetime? My thoughts are to parse the string into components, assemble them in the correct order, and pass that string to the constructor of datetime. Is there a way to pass datetime() a custom date format string instead?

Thanks!

A: 

And for the custom format strings: http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

Kirk Woll
+4  A: 

Take a look at DateTime.ParseExact, e.g.

var dateTime = DateTime.ParseExact(
    "12 JUN 2010", 
    "dd MMM yyyy", 
    CultureInfo.InvariantCulture);

You can also specify a fourth parameter to set the Kind of date/time, for example if they are UTC date/times then you'd likely want to specify DateTimeStyles.AssumeUniversal.

Greg Beech
I just learned something new, +1
Jimmy Hoffa
+1, I just learned two new things, one of them being Jimmy Hoffa is alive and well
LittleBobbyTables
A: 

That DateTime string is valid for DateTime.Parse() (or .TryParse())

As for a truly custom string that .Parse() can't handle, you are probably correct, you'd need to pull your string apart and reassemble it in a useful manner.

AllenG
+1  A: 

You can use DateTime.ParseExact, and pass the format into this method using the custom date and time format strings. This will allow you to parse the date in one pass.

Reed Copsey