来自字符串的新DateTimeOffset

时间:2016-11-07 23:25:21

标签: c# datetime datetimeoffset

我想从字符串

创建一个带DateTimeOffset的新offset = -5

我做:

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

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

2 个答案:

答案 0 :(得分:2)

  

是否可以在不经过的情况下直接创建DateTimeOffset   DateTime?

不,那是不可能的。

每个DateTimeOffset个实例都必须拥有它DateTimeKind.Local部分。您无法创建DateTime个实例,只有UTC Offset值。

Of course it has some constructors并未将DateTime作为参数直接;

  • 的DateTimeOffset(的Int32,的Int32,的Int32,的Int32,的Int32,的Int32,的Int32,日历,时间跨度)
  • 的DateTimeOffset(的Int32,的Int32,的Int32,的Int32,的Int32,的Int32,的Int32,时间跨度)
  • 的DateTimeOffset(的Int32,的Int32,的Int32,的Int32,的Int32,的Int32,时间跨度)
  • 的DateTimeOffset(Int64类型,时间跨度)

但那些DateTimeOffsetDateTime在内部为当前实例.DateTime property生成Int32

  

我想从字符串

创建一个新的DateTimeOffset,其偏移量= -5

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

答案 1 :(得分:1)

当然可以:

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

虽然它不是很漂亮 - 重点是DateTimeOffset也有ParseExact方法。