php - how to get date and time respecting user's timezone -


i'm totally confused php/mysql date/time functions.
date column timestamp - defalult value - current_timestamp.

date_default_timezone_set("europe/belgrade"); //my timezone  $stmt = $db->query("select * cinema order date desc"); while($row = $stmt->fetch()){     $date = strtotime($row['date']);     $datea = date("d-m-y", $date);     $time = date("h:i", $date);     ... 

i'm getting difference of -2 hours comparing local time.

how can correct time (respecting timezone), , if possible each user, whereever located on globe, data respecting own timezone?

mysql not saves time zones @ all. depending you'd use data stored, should either store date-time value in "utc" (this gmt, no tz offset @ all) or in cases store offset set. second option, should store tz or offset somewhere else (again mysql date-time unable store this) in order reconstruct object db.

for example, add created_at, updated_at fields in db records , store in utc, task use php's gmdate('y-m-d h:i:s')

now, if have show date-time in user's tz, have create datetime object , change tz:

$createdat = new datetimeimmutable(     $row->created_at,      new datetimezone('utc') ); 

for second case, store date-time additional piece of data save tz, have make sure instantiate datetime object using timezone constructor second argument move offset properly. person argentina travel madrid, might want store checkin date in tz of destination (e.g. madrid), displaying purposes, (e.g. want know if might able call in normal time , let family know he/she arrived ok) later convert origin tz:

$checkinat = new datetimeimmutable(     $row->checkin_at,     new datetimezone('europe/madrid') ); $checkinat->settimezone('america/argentina/buenos_aires'); 

to sum up:

  • you need know how date stored, if store of in utc (e.g. no offset) simpler, might have issues when querying data if need access data assuming have offset already.
  • mysql not stores tz date-time value.
  • make sure instantiate datetime object using proper timezone, php use default tz if don't pass in constructor. set on php.ini , can change function date_default_timezone_set in scripts.

Comments

Popular posts from this blog

Command prompt result in label. Python 2.7 -

javascript - How do I use URL parameters to change link href on page? -

amazon web services - AWS Route53 Trying To Get Site To Resolve To www -