我有一个从Telerik DatePicker获取的字符串。我返回的字符串是“ Sat Aug 01 2009 00:00:00 GMT-0400(东部夏令时间)”,我需要将其转换为“ yyyy-MM-dd”,但是我没有运气。我保留错误“字符串未被识别为有效的日期时间”。
我尝试过:
var fromDate = Convert.ToDateTime(dateFrom)
CultureInfo culture = new CultureInfo("en-US");
var fromDate = Convert.ToDateTime(dateFrom, culture);
var fromDate = DateTime.ParseExact(dateFrom, "yyyy-MM-dd", CultureInfo.InvariantCulture);
我尝试使用的上述方法均无效。
答案 0 :(得分:1)
这应该完成任务
var date = DateTime.ParseExact(
"Sat Aug 01 2009 00:00:00 GMT-0400 (Eastern Daylight Time)",
"ddd MMM dd yyyy HH:mm:ss 'GMT-0400 (Eastern Daylight Time)'",
CultureInfo.InvariantCulture);
var parsedDate = date.ToString("yyyy-MM-dd");
DateTime.ParseExact的第一个参数将是Datepicker中的字符串
var stringFromDatePicker = "Sat Aug 01 2009 00:00:00 GMT-0400 (Eastern Daylight Time)";
var date = DateTime.ParseExact(stringFromDatePicker,
"ddd MMM dd yyyy HH:mm:ss 'GMT-0400 (Eastern Daylight Time)'",
CultureInfo.InvariantCulture);
var parsedDate = date.ToString("yyyy-MM-dd");
答案 1 :(得分:1)
基于user8606929的答案。如果只对字符串的日期部分而不是时间感兴趣,则可以使用子字符串删除字符串的末尾,然后再将字符串解析为DateTime。类似于:
string dateFromDatePicker = "Sat Aug 01 2009 00:00:00 GMT-0400 (Eastern Daylight Time)";
string dateAsString = dateFromDatePicker.Substring(0,15);
DateTime selectedDate = DateTime.ParseExact(dateAsString, "ddd MMM dd yyyy", CultureInfo.InvariantCulture)
如果您对日期选择器的代码有任何控制权,则可以查看其文档,以查看是否有可能更改所选日期的格式,这可能使解析/使用起来更容易。 / p>