繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM