I have a bunch of date times that I keep track of for my app. They are all in UTC time. For part of my app I want to send an email with one of these times, but edited to be in that specific time zone.
There are only two major areas that I will deal with, the east coast and Texas (Dallas and Huston)
I can also make a new datetime when I send out this email to get the eastern time zone (DateTime timestamp = DateTime.Now;
)
My Question is this:
If the user is in the texas area how can I convert my time from eastern to that time (1 hour less)?
I tried something like this:
//Convert timestamp to local time
TimeSpan ts = TimeZone.CurrentTimeZone.GetUtcOffset(timestamp);
timestamp.Add(ts);
timestampString = timestamp.ToString();
But that didn't work. I also know that this line is not valid:
timestamp.Hour = timestamp.Hour - 1;
var now = DateTime.Now; // Current date/time
var utcNow = now.ToUniversalTime(); // Converted utc time
var otherTimezone = TimeZoneInfo.FindSystemTimeZoneById("ANY OTHER VALID TIMEZONE"); // Get other timezone
var newTime = TimeZoneInfo.ConvertTimeFromUtc(utcNow, otherTimezone); // New Timezone
Use the TimeZoneInfo Class to convert a local time to a time in an alternative timezone:
TimeZoneInfo est = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime targetTime = TimeZoneInfo.ConvertTime(timeToConvert, est);
This should do the trick
DateTime localTime = TimeZoneInfo.ConvertTime(DateTime.UtcNow, TimeZoneInfo.Local);
Use TimeZoneInfo.ConvertTimeFromUtc. The example listed there is pretty self explanatory.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With