【问题标题】:New DateTimeOffset from string来自字符串的新 DateTimeOffset
【发布时间】:2017-03-21 11:08:17
【问题描述】:

我想用字符串中的offset = -5 创建一个新的DateTimeOffset

我愿意:

string dt = "11082016";    
DateTime date = DateTime.ParseExact(dt, "MMddyyyy", 
                                    CultureInfo.InvariantCulture, 
                                    DateTimeStyles.None);    
DateTimeOffset dto = new DateTimeOffset(date, TimeSpan.FromHours(-5));

是否可以直接创建DateTimeOffset而不经过DateTime

【问题讨论】:

  • DateTimeOffset dto = new DateTimeOffset(2016, 11, 8, 0, 0, 0, TimeSpan.FromHours(-5));
  • 你能给出使用DateTimeOffset,而不是DateTimeTimeSpan的任何理由吗?
  • @LeiYang 我需要用它来处理时区感知

标签: c# datetime datetimeoffset


【解决方案1】:

当然可以:

string dt = "11082016";
string o = "-5";
var dto = DateTimeOffset.ParseExact(dt + o, "MMddyyyyz", CultureInfo.InvariantCulture);

虽然不是很漂亮——关键是DateTimeOffset 也有一个ParseExact 方法。

【讨论】:

    【解决方案2】:

    是否可以直接创建DateTimeOffset而不经过 日期时间?

    不,这是不可能的。

    每个DateTimeOffset 实例必须拥有它的DateTime 部分。您不能仅使用 UTC Offset 值创建 DateTimeOffset 实例。

    Of course it has some constructors即不把DateTime作为参数直接之类的;

    • DateTimeOffset(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Calendar, TimeSpan)
    • DateTimeOffset(Int32, Int32, Int32, Int32, Int32, Int32, Int32, TimeSpan)
    • DateTimeOffset(Int32, Int32, Int32, Int32, Int32, Int32, TimeSpan)
    • DateTimeOffset(Int64, TimeSpan)

    但那些Int32Int64 值仍然为当前实例.DateTime property 在内部生成Datetime

    我想从字符串中创建一个偏移量 = -5 的新 DateTimeOffset

    如果你能做到这一点,你就不会需要那个字符串,你不觉得吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多