He encontrado que jquery datepicker agregará caracteres no imprimibles en la cadena. Por lo tanto, cuando intente convertir a otro formato, arrojará un error de fecha no válida cada vez. En mi caso, solo estaba tratando de convertirlo nuevamente a una marca de tiempo de cualquier cultura en la que el usuario estaba en ese momento. Es un enfoque algo hacky, pero funcionó para mí.
static public string ToDigitsOnly(string input)
{
Regex digitsOnly = new Regex(@"[^\d]");
return digitsOnly.Replace(input, "");
}
static private DateTime ConvertDateTimeToDate(string dateTimeString, String langCulture)
{
System.DateTime result;
string[] dateString = dateTimeString.Split('/');
try
{
if (langCulture != "en")
{
int Year = Convert.ToInt32(ToDigitsOnly(dateString[2]));
int Month = Convert.ToInt32(ToDigitsOnly(dateString[1]));
int Day = Convert.ToInt32(ToDigitsOnly(dateString[0]));
result = new DateTime(Year, Month, Day, 00, 00, 00);
}
else
{
int Year = Convert.ToInt32(dateString[2]);
int Month = Convert.ToInt32(dateString[0]);
int Day = Convert.ToInt32(dateString[1]);
result = new DateTime(Year, Month, Day, 00, 00, 00);
}
}
catch
{
// last attempt
result = Convert.ToDateTime(dateTimeString, CultureInfo.GetCultureInfo("en-US"));
}
return result;
}
Genial, gracias Jon. –
¿Qué pasa si me veo forzado a escribir tryparse entonces hay algún trabajo? – Neel
@Neel: ¿Por qué te verías obligado a utilizar 'TryParse'? ¿Qué otras restricciones hay? ¿Definitivamente sabes el formato?¿Puedes especificar la cultura en la llamada 'TryParse'? –