I have the following ASP.Net MVC Controller method:
public ActionResult DoSomething(DateTime utcDate)
{
var localTime = utcDate.ToLocalTime();
}
The problem is that localTime will have the exact same value as utcDate. I assume this is because utcDate doesn't know it has a UTC value. So my question is how can I convert utcDate (which I KNOW is UTC) into local?
Add the local time offset to the UTC time. For example, if your local time offset is -5:00, and if the UTC time is shown as 11:00, add -5 to 11. The time setting when adjusted for offset is 06:00 (6:00 A.M.).
This datetime object will have no timezone associated with it. Therefore assign the UTC timezone to this datetime object using replace(tzinfo=pytz. UTC) function. Convert the timezone of the datetime object to local timezone by calling the astimezone() function on datetime object.
To convert the time in any designated time zone to local time, use the TimeZoneInfo. ConvertTime method. The value returned by the conversion is a DateTime whose Kind property always returns Local. Consequently, a valid result is returned even if ToLocalTime is applied repeatedly to the same DateTime.
=TIMEVALUE(RIGHT(A1,5))+DATEVALUE(SUBSTITUTE(LEFT(A1,10),".","/"))+TIME(8,0,0) in B1. r-click cell > format > custom : yyyy. mm. dd hh:mm.
If you know the DateTime
contains a UTC value, you can use the following:
DateTime iKnowThisIsUtc = whatever;
DateTime runtimeKnowsThisIsUtc = DateTime.SpecifyKind(
iKnowThisIsUtc,
DateTimeKind.Utc);
DateTime localVersion = runtimeKnowsThisIsUtc.ToLocalTime();
For example, in my current application, I create timestamps in my database with SQL's utcnow
, but when I read them into my C# application the Kind
proeprty is always Unknown
. I created a wrapper function to read the timestamp, deliberately set its Kind
to Utc
, and then convert it to local time - essentially as above.
Note that DateTime.ToLocalTime()
only doesn't affect the value if one (or both) of the following holds:
DateTime
's Kind
property is DateTimeKind.Local
I think we can assume the second point isn't true. Thus it seems that iKnowThisIsUtc
's Kind
property is set to Local
already. You need to figure out why whatever is supplying you with these DateTime
s thinks they are local.
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