【问题标题】:Convert formatted date in string to datetime c#将字符串中的格式化日期转换为日期时间c#
【发布时间】:2015-10-11 21:24:52
【问题描述】:

我有如下字符串格式的日期

Tue Jun 30 2015 00:00:00 GMT+0530 (India Standard Time)

我想在 c# 中将其转换为DateTime

我正在使用 javascript 从 Telerik datepicker 获取此日期。

【问题讨论】:

标签: c# string datetime type-conversion


【解决方案1】:

由于您的字符串有UTC offset,我会将其解析为DateTimeOffset。如果不使用文字字符串分隔符,就无法解析您的 GMT(India Standard Time) 部分。请记住,DateTimeDateTimeOffset 都不了解时区DateTimeOffset 至少要好一点,因为它知道 UTC 时刻和一个偏移量。

var s = "Tue Jun 30 2015 00:00:00 GMT+0530 (India Standard Time)";
DateTimeOffset dto;
if (DateTimeOffset.TryParseExact(s, "ddd MMM dd yyyy HH:mm:ss 'GMT'K '(India Standard Time)'", 
                                 CultureInfo.InvariantCulture, 
                                 DateTimeStyles.None, out dto))

{
     Console.WriteLine(dto);
}

现在你有一个DateTimeOffset 作为{30.06.2015 00:00:00 +05:30}

作为替代(和更好的选择),Nodatime 具有 ZonedDateTime structure,即;

LocalDateTime 在特定时区并具有特定偏移量 以区分其他模棱两可的瞬间。

【讨论】:

  • 我需要为不同的文化使用不同的分隔符吗?
  • @Twix 你到底在说什么分隔符?由于您的字符串将: 作为TimeSeparator,因此文化也需要拥有它。
  • 此解决方案将如何适用于不同时区。我的意思是GMTIndia Standard Time) 这可能取决于用户的文化。
  • @Twix 不,我不会告诉你,DateTimeDateTimeOffset 是时区 awareness。看看 NodaTime 吧。
  • 好的,谢谢...但是我必须在 c# 中执行此操作,而无需使用任何其他工具或包
猜你喜欢
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 2014-08-10
  • 2018-10-02
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多