views:

1512

answers:

2

A few months ago I was introduced to the new DateTimeOffset type and was glad DateTime's flaws with regard to time zones were finally taken care of.

However, I was left wondering if there were any overhead or problems that could occur from using this new type.

I work on a multi-locale web application. Does anyone know of anything that chould sway me from just using it for all my date/time work? Is there a window for abuse here?

Reference: DateTimeOffset: A New DateTime Structure in .NET 3.5 by Justin Van Patten

+5  A: 

Sometimes you really just want to represent a "local" (timezone unaware) date and time rather than an instant in time. To be honest it's more often useful to represent just a time - e.g. "wake me up at 8am, regardless of timezone" - but date and time could be useful too.

I agree that for the vast majority of cases, DateTimeOffset is a better fit. It does strike me as odd that there isn't a DateTimeTimeZone struct which has both the instant and its timezone though... an offset doesn't actually give you all the information you need. (For instance, given a DateTimeOffset, you don't know what the time will be 24 hours later, because you don't know when DST might kick in.)

If you want that kind of structure, I have a very crude implementation in another answer. I'm sure it could be improved very easily :)

Jon Skeet
You could always represent your times in UTC and convert to a specific time zone when needed...
Omer van Kloeten
Omer: But often you want to preserve the timezone information as well, I find. Yes, often you can get away with just the UTC time, but for recurrent events and the like you need to know the timezone too.
Jon Skeet
+2  A: 

Well, one obvious answer would be when you need to support clients without the SP that it ships in (it isn't actually in 3.5 - it is in 2.0 SP1, which shipped at the same time).

Marc Gravell
True, but I was actually talking about internally in my code and in the UI layer.
Omer van Kloeten
Fair enough. I thought I'd mention it because VS multi-targetting doesn't make it obvious when you've used SP1 features while allegedly targetting 2.0. There is now an FxCop (etc) add-in to do this, at least.
Marc Gravell