5

我需要将字符串"Fri Sep 11 00:00:00 GMT+04:00 2020"转换为DateTime对象11.09.2011

当我使用

DateTime result;
DateTime.TryParseExact(MyString, "ddd MMM dd HH:mm:ss 'GMT'zzz yyyy", 
    CultureInfo.InvariantCulture, DateTimeStyles.None, out result);

result等于{9/10/2020 11:00:00 PM}

如何修改代码以使日期组件是11.09.2011不是 10.09.2011(我只需要日期而不关心时间)?

4

2 回答 2

7

DateTimeOffset假设您一个偏移量,请改为解析为 a 。从您正在使用的说明符的文档中:zz

对于 DateTime 值,“zz”自定义格式说明符表示本地操作系统时区与 UTC 的有符号偏移量,以小时为单位。它不反映实例的 DateTimeKind 属性的值。因此,不建议将“zz”格式说明符与 DateTime 值一起使用。

所以你最终会得到:

DateTimeOffset result;
bool success = DateTimeOffset.TryParseExact
         (text, "ddd MMM dd HH:mm:ss 'GMT'zzz yyyy", 
          CultureInfo.InvariantCulture, DateTimeStyles.None, out result);

从那里,您可以参加DateTime9 月 11 日午夜的比赛。

如果你想要一个日期,你可以使用我的Noda Time项目来创建一个LocalDate

LocalDate = OffsetDateTime.FromDateTimeOffset(result).LocalDateTime.Date;

(我很想建议直接解析到OffsetDateTime,但我们还没有得到支持。我们希望将它包含在版本 1.2 中。)

于 2013-02-08T14:07:11.493 回答
4

C# 没有纯Date类型。
如果您不关心时间,请忽略DateTime.

如果您希望时间始终为午夜,请使用该.Date属性,它将返回DateTime具有相同日期但在午夜的 a。

于 2013-02-08T14:02:17.057 回答