Are you sure your time zone is really UTC +3:30, all the time, without daylight saving time? If so, you can create a DateTimeOffset with an appropriate offset (3.5 hours). For instance:
DateTimeOffset dtOffset = new DateTimeOffset(DateTime.UtcNow, TimeSpan.FromHours(3.5));
Of course, this gives you a DateTimeOffset instead of a DateTime ... can you use this?
The best solution is to use TimeZoneInfo - for example, you can get the correct time zone and call
DateTime local = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, tzInfo);
... or you can use TimeZoneInfo , but still get DateTimeOffset :
DateTimeOffset dto = TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, tzInfo);
Personally, I would recommend using DateTimeOffset if you can, as the DateTime value is somewhat ambiguous and hardly works correctly.
The .NET processing date and time is a bit of a mess, unfortunately :( I have a project called Noda Time that should improve if we ever finish it, but it's not ready for production yet.
source share