【发布时间】: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
我有如下字符串格式的日期
Tue Jun 30 2015 00:00:00 GMT+0530 (India Standard Time)
我想在 c# 中将其转换为DateTime。
我正在使用 javascript 从 Telerik datepicker 获取此日期。
【问题讨论】:
标签: c# string datetime type-conversion
由于您的字符串有UTC offset,我会将其解析为DateTimeOffset。如果不使用文字字符串分隔符,就无法解析您的 GMT 和 (India Standard Time) 部分。请记住,DateTime 和 DateTimeOffset 都不了解时区。 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在特定时区并具有特定偏移量 以区分其他模棱两可的瞬间。
【讨论】:
: 作为TimeSeparator,因此文化也需要拥有它。
GMT 和India Standard Time) 这可能取决于用户的文化。
DateTime 和 DateTimeOffset 是时区 awareness。看看 NodaTime 吧。