Php 使用时区格式化DateTime

Php 使用时区格式化DateTime,php,datetime,Php,Datetime,我在让时区在客户项目中发挥作用方面遇到了一些困难 我很确定我只是太累了,看不清眼前是什么 我有这条线 new DateTime(date('m/d/Y h:i a',$expDate), $timeZone); 我正试图从这行代码中获取日期和时间,以显示在网站上(或用于其他日期计算…如该日期/时间是否已过等),但我希望它使用我指定的时区 我可以这样做: 但它使用UTC表示时区。。。这就是我首先构建DateTime()位的原因 $timeZone的默认值是EST(‘美国/纽约’),因为我的客户

我在让时区在客户项目中发挥作用方面遇到了一些困难

我很确定我只是太累了,看不清眼前是什么

我有这条线

new DateTime(date('m/d/Y h:i a',$expDate), $timeZone);
我正试图从这行代码中获取日期和时间,以显示在网站上(或用于其他日期计算…如该日期/时间是否已过等),但我希望它使用我指定的时区

我可以这样做:

但它使用UTC表示时区。。。这就是我首先构建DateTime()位的原因


$timeZone的默认值是EST(‘美国/纽约’),因为我的客户居住在这个时区

但他们在美国和加拿大各地都有客户列表,因此他们可以选择设置时区以匹配客户的位置

我只是不知道如何让它在确定到期日(和时间)是否已过时实际使用该时区

我需要它默认为他们客户时区到期日期的午夜


如有任何建议,将不胜感激。

请将此用于时区格式:

$timezone = new DateTimeZone('America/New_York');
$today = new DateTime("now", $timezone);
$today_formatted = $today->format('M j, Y h:i a T');
获取客户端时区必须由JS完成,下面是一个答案,肯定会对您有所帮助:


我必须先问一下,什么是客户端操作系统?有时候PHP不能很好地使用它,特别是在一些Linux发行版上。客户端的时区是从下拉列表中选择的,所以我已经有了想要用作变量的时区——它不是访问者的本地时区。
$timezone = new DateTimeZone('America/New_York');
$today = new DateTime("now", $timezone);
$today_formatted = $today->format('M j, Y h:i a T');