我需要将字符串"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
(我只需要日期而不关心时间)?
答案 0 :(得分:7)
考虑到你已经得到一个偏移量,将其解析为DateTimeOffset
。来自您正在使用的documentation of the zz
specifier:
使用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);
从那里,您可以参加9月11日午夜的DateTime
部分。
如果您希望只一个日期,您可以使用我的Noda Time项目创建LocalDate
:
LocalDate = OffsetDateTime.FromDateTimeOffset(result).LocalDateTime.Date;
(我很乐意建议直接解析OffsetDateTime
,但我们还没有得到支持。我们希望将它包含在1.2版中。)
答案 1 :(得分:4)
C#没有纯Date
类型
如果您不关心时间,请忽略DateTime
。
如果您希望时间始终为午夜,请使用.Date
属性,该属性将返回DateTime
,其日期相同,但午夜时间。