New DateTimeOffset from string

安稳与你 提交于 2019-12-11 08:04:33

问题


I want to create a new DateTimeOffset with offset = -5 from a string

I do :

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

Is it possible to create directly a DateTimeOffset without passing by DateTime ?


回答1:


Is it possible to create directly a DateTimeOffset without passing by DateTime ?

No, that's not possible.

Every DateTimeOffset instance has to have it's DateTime part. You can't create a DateTimeOffset instance just with a UTC Offset value.

Of course it has some constructors that doesn't take DateTime as a parameter directly like;

  • 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)

But those Int32 and Int64 values are still generate a Datetime internally for current instance .DateTime property.

I want to create a new DateTimeOffset with offset = -5 from a string

If you could do that, you wouldn't need that string, don't you think?




回答2:


Sure you can:

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

Though it's not very pretty - the point is DateTimeOffset also has a ParseExact method.



来源:https://stackoverflow.com/questions/40476488/new-datetimeoffset-from-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!