将长日期/时区字符串转换为日期时间

时间:2020-05-01 15:50:06

标签: c# date

我有一个从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);

我尝试使用的上述方法均无效。

2 个答案:

答案 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>

相关问题