Как я могу преобразовать строку datetime следующим образом: 2012-09-03 22:00
US Estern в часовой пояс UTC?
Вы должны посмотреть объект DateTime
и связанные с ним функции в документации.
Если ваша дата ввода уже находится в строковом формате, DateTime::createFromFormat()
поможет вам создать целочисленную дату типа эпохи, с которой объект может работать. После этого это просто getTimezone()
и setTimezone()
.
Вы можете преобразовать временные метки из БД в эпоху с помощью strtotime
и обернуть их в специальный класс CSS:
<span class="timestamp"><?php echo strtotime('2012-09-03 22:00'); ?></span>
И затем с небольшим количеством Javascript (пример jQuery), динамически преобразуйте эпоху unix в дату и время локали:
$('.timestamp').each(function(){ var seconds = $(this).html(); var d = new Date(1000 * parseInt(seconds)); var t = (d.getMonth()<9 ? '0':'') + parseInt(d.getMonth()+1) + '/'; t+= (d.getDate()<10 ? '0' : '') + parseInt(d.getDate()) + '/'; t+= parseInt((d.getYear()<1000 ? d.getYear()+1900 : d.getYear())) + ' '; t+= (d.getHours()<10 ? '0' : '') + d.getHours() + ':' + (d.getMinutes()<10 ? '0' : '') + d.getMinutes(); $(this).html(t); });
Это будет выводить даты в формате mm/dd/yyyy hh:ii
, относительно часовой пояс браузера.