@blakeyrat said:
.NET has native comprehension of time zones; it just doesn't store them internally in the DateTime object so whenever you print out a date you must specify the timezone. That's a design decision-- if you have two DateTime objects, one of which is 3:00 PM PST and another is 6:00 PM EST, they should equal each other. Using the same internal representation for both guarantees that.
There is also a DateTimeOffset class that additionally maintains time-zone information (though only in terms of the offset from UTC)