# Time zone offset

**URL:** <https://forums.plex.tv/t/time-zone-offset/70768>\
**Category:** Dev/API Corner\
**Tags:** plugin-dev\
**Created:** [July 14, 2014, 1:12am UTC](https://forums.plex.tv/t/time-zone-offset/70768 "2014-07-14T01:12:42Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![davidvr](https://avatars.discourse-cdn.com/v4/letter/d/ec9cab/32.png) [@davidvr](https://forums.plex.tv/u/davidvr)\
**Post date:** [July 14, 2014, 1:12am UTC](https://forums.plex.tv/t/time-zone-offset/70768/1 "2014-07-14T01:12:42Z")

</div>

I can’t seem to figure out inside a channel how to find the local Timezone or timezone offset. Can anyone else share how to accomplish converting a Utc time stamp to local time?

---

<div class="post-metadata">

**Author:** ![mikedm139](https://sea1.discourse-cdn.com/plex/user_avatar/forums.plex.tv/mikedm139/32/96909_2.png) [@mikedm139](https://forums.plex.tv/u/mikedm139)\
**Post date:** [July 14, 2014, 8:58pm UTC](https://forums.plex.tv/t/time-zone-offset/70768/2 "2014-07-14T20:58:42Z")

</div>

I'm pretty sure that the framework method Datetime.FromTimestamp() takes a UTC timestamp and mixes it with local timezone info to return a datetime object.

You can then use python's built-in datetime methods to extract .date(), .time() or other info as necessary and they should all take local timezone into consideration.

---

<div class="post-metadata">

**Author:** ![davidvr](https://avatars.discourse-cdn.com/v4/letter/d/ec9cab/32.png) [@davidvr](https://forums.plex.tv/u/davidvr)\
**Post date:** [July 14, 2014, 9:06pm UTC](https://forums.plex.tv/t/time-zone-offset/70768/3 "2014-07-14T21:06:27Z")

</div>

I had hoped the same thing, but it seems to preserve the UTC timezone.&nbsp;

Here is the code I have so far ( in the code for now I am assuming a 6 hour offset)&nbsp;

```
unixtimestarted = Datetime.TimestampFromDatetime(Datetime.ParseDate(airingData['startTime']))
  timezoneoffset = 6 * 60 * 60
  displayeddate = str(Datetime.FromTimestamp(Datetime.TimestampFromDatetime(Datetime.ParseDate(airingData['startTime'])) -timezoneoffset))
```

---

<div class="post-metadata">

**Author:** ![mikedm139](https://sea1.discourse-cdn.com/plex/user_avatar/forums.plex.tv/mikedm139/32/96909_2.png) [@mikedm139](https://forums.plex.tv/u/mikedm139)\
**Post date:** [July 14, 2014, 9:15pm UTC](https://forums.plex.tv/t/time-zone-offset/70768/4 "2014-07-14T21:15:25Z")

</div>

Why are you using Datetime.ParseDate() prior to Datetime.FromTimestamp()?

I wouldn't be surprised if that's throwing a wrench into the timezone handling.

---

<div class="post-metadata">

**Author:** ![davidvr](https://avatars.discourse-cdn.com/v4/letter/d/ec9cab/32.png) [@davidvr](https://forums.plex.tv/u/davidvr)\
**Post date:** [July 14, 2014, 9:31pm UTC](https://forums.plex.tv/t/time-zone-offset/70768/5 "2014-07-14T21:31:10Z")

</div>

The original date I am getting is a string that looks like&nbsp;2014-07-16T23:30Z which I would need to convert to a Datetime object first right?&nbsp;

---

<div class="post-metadata">

**Author:** ![mikedm139](https://sea1.discourse-cdn.com/plex/user_avatar/forums.plex.tv/mikedm139/32/96909_2.png) [@mikedm139](https://forums.plex.tv/u/mikedm139)\
**Post date:** [July 14, 2014, 11:27pm UTC](https://forums.plex.tv/t/time-zone-offset/70768/6 "2014-07-14T23:27:32Z")

</div>

Ah. I was envisioning the wrong type of timestamp.

Try:

```
startdate = Datetime.ParseDate(airingData['startTime'])
timestarted = startdate.time()
datestarted = startdate.date()
```

---

<div class="post-metadata">

**Author:** ![davidvr](https://avatars.discourse-cdn.com/v4/letter/d/ec9cab/32.png) [@davidvr](https://forums.plex.tv/u/davidvr)\
**Post date:** [July 15, 2014, 1:07am UTC](https://forums.plex.tv/t/time-zone-offset/70768/7 "2014-07-15T01:07:19Z")

</div>

It still does not give a local timestamp:

here is my source data:

'startTime': '2014-07-15T20:00Z'

Here is the output of the code:

2014-07-14 20:02:48,876 (109f07000) : &nbsp;INFO (\_\_init\_\_:948) - \*\*\*TabloTV: startdate: datetime.datetime(2014, 7, 15, 20, 0, tzinfo=tzutc())

2014-07-14 20:02:48,876 (109f07000) : &nbsp;INFO (\_\_init\_\_:948) - \*\*\*TabloTV: time: datetime.time(20, 0)

2014-07-14 20:02:48,876 (109f07000) : &nbsp;INFO (\_\_init\_\_:948) - \*\*\*TabloTV: date: datetime.date(2014, 7, 15)

&nbsp;

This should be 3 PM local time&nbsp;

---

<div class="post-metadata">

**Author:** ![mikedm139](https://sea1.discourse-cdn.com/plex/user_avatar/forums.plex.tv/mikedm139/32/96909_2.png) [@mikedm139](https://forums.plex.tv/u/mikedm139)\
**Post date:** [July 15, 2014, 7:14pm UTC](https://forums.plex.tv/t/time-zone-offset/70768/8 "2014-07-15T19:14:23Z")

</div>

I guess I was wrong about the Framework taking local timezones into account.

Here's a suggestion which \_should\_ avoid requiring any hard-coded TZ info.

```
local = Datetime.ParseDate('2014-07-16T23:30Z') - (Datetime.UTCNow() - Datetime.Now())
```

---

<div class="post-metadata">

**Author:** ![dane22](https://sea1.discourse-cdn.com/plex/user_avatar/forums.plex.tv/dane22/32/4389_2.png) [@dane22](https://forums.plex.tv/u/dane22)\
**Post date:** [July 15, 2014, 7:31pm UTC](https://forums.plex.tv/t/time-zone-offset/70768/9 "2014-07-15T19:31:19Z")

</div>

> I guess I was wrong about the Framework taking local timezones into account.
> 
> Here's a suggestion which \_should\_ avoid requiring any hard-coded TZ info.
> 
> ```
> local = Datetime.ParseDate('2014-07-16T23:30Z') - (Datetime.UTCNow() - Datetime.Now())
> ```

Not sure here, and haven't tested, but will above work for timezones on both sides on GMT?

/T

---

<div class="post-metadata">

**Author:** ![dane22](https://sea1.discourse-cdn.com/plex/user_avatar/forums.plex.tv/dane22/32/4389_2.png) [@dane22](https://forums.plex.tv/u/dane22)\
**Post date:** [July 15, 2014, 7:34pm UTC](https://forums.plex.tv/t/time-zone-offset/70768/10 "2014-07-15T19:34:04Z")

</div>

And maybe better with :

[https://docs.python.org/2/library/datetime.html#tzinfo-objects](https://docs.python.org/2/library/datetime.html#tzinfo-objects)

tzinfo.fromutc(_self_,&nbsp;_dt_)

/T

---

<div class="post-metadata">

**Author:** ![mikedm139](https://sea1.discourse-cdn.com/plex/user_avatar/forums.plex.tv/mikedm139/32/96909_2.png) [@mikedm139](https://forums.plex.tv/u/mikedm139)\
**Post date:** [July 15, 2014, 8:28pm UTC](https://forums.plex.tv/t/time-zone-offset/70768/11 "2014-07-15T20:28:36Z")

</div>

> Not sure here, and haven't tested, but will above work for timezones on both sides on GMT?
> 
> /T

I _think_ so.

> And maybe better with :
> 
> [https://docs.python.org/2/library/datetime.html#tzinfo-objects](https://docs.python.org/2/library/datetime.html#tzinfo-objects)
> 
> tzinfo.fromutc(_self_,&nbsp;_dt_)
> 
> /T

or that.

---

<div class="post-metadata">

**Author:** ![dane22](https://sea1.discourse-cdn.com/plex/user_avatar/forums.plex.tv/dane22/32/4389_2.png) [@dane22](https://forums.plex.tv/u/dane22)\
**Post date:** [July 15, 2014, 8:46pm UTC](https://forums.plex.tv/t/time-zone-offset/70768/12 "2014-07-15T20:46:52Z")

</div>

> I _think_ so.

LOL, and good enough for me...

(If it ain't broken...don't fix it)

/T

---

<div class="post-metadata">

**Author:** ![davidvr](https://avatars.discourse-cdn.com/v4/letter/d/ec9cab/32.png) [@davidvr](https://forums.plex.tv/u/davidvr)\
**Post date:** [July 15, 2014, 9:58pm UTC](https://forums.plex.tv/t/time-zone-offset/70768/13 "2014-07-15T21:58:21Z")

</div>

I'll try those examples later tonight, but I think I have tried basically the same thing. I found part of the issue, Datetime.Now() returns a naive object and has no tzinfo so Datetime.Now and Datetime.UTCnow() both return the same time. Any ideas how to get an Aware Datetime object?&nbsp;

See:&nbsp;[https://docs.python.org/2/library/datetime.html](https://docs.python.org/2/library/datetime.html)

---

<div class="post-metadata">

**Author:** ![davidvr](https://avatars.discourse-cdn.com/v4/letter/d/ec9cab/32.png) [@davidvr](https://forums.plex.tv/u/davidvr)\
**Post date:** [July 19, 2014, 9:46pm UTC](https://forums.plex.tv/t/time-zone-offset/70768/14 "2014-07-19T21:46:45Z")

</div>

Ok, In case anyone else ever has this issue, This appears to work:

&nbsp; &nbsp;datetime = Datetime.Now()

&nbsp; &nbsp; timezoneoffset = int((datetime - datetime.utcnow()).total\_seconds())

---

<div class="post-metadata">

**Author:** ![mikedm139](https://sea1.discourse-cdn.com/plex/user_avatar/forums.plex.tv/mikedm139/32/96909_2.png) [@mikedm139](https://forums.plex.tv/u/mikedm139)\
**Post date:** [July 19, 2014, 11:33pm UTC](https://forums.plex.tv/t/time-zone-offset/70768/15 "2014-07-19T23:33:19Z")

</div>

Thanks for posting your findings.

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/plex/original/3X/2/a/2acb9765406f63293d357b4ec509ec39aa28f2ad.png) [@system](https://forums.plex.tv/u/system)\
**Post date:** [December 21, 2019, 2:28am UTC](https://forums.plex.tv/t/time-zone-offset/70768/16 "2019-12-21T02:28:44Z")

</div>

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
