[英]Convert long date/time zone string to datetime
我有一个从 Telerik DatePicker 得到的字符串。 我要返回的字符串是“2009 年 8 月 1 日星期六 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);
我尝试过的上述方法都没有奏效。
这应该完成任务
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");
基于 user8606929 答案。 如果您只对字符串的日期部分而不是时间感兴趣,那么您可以使用 substring 删除字符串的结尾,然后再将字符串解析为 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)
此外,如果您对日期选择器的代码有任何控制权,您可以查看它的文档以查看是否可以更改所选日期的格式,这可能会使解析/使用更容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.