问题
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