PHP-获取特定时区的当前时间

Gai*_*tus 2 php mysql

我创建了一个漫画,并有一个分配了日期的漫画页面数据库。我想获取最新日期的漫画,但不希望获得未来的漫画。

换句话说,如果today是2000年12月12日,我有以下漫画:

  1. 2000年1月12日
  2. 2000年12月12日
  3. 2000年12月30日

我将只能查询和获得漫画1和2。

到目前为止,我已经使用gettimeofday()函数完成了此工作,只是将其分配给变量并执行了MySQL查询。这是我现在正在获取最新(但不是未来)漫画的工作的简化版本。

 $gtod1 = gettimeofday();
 $today = date("Y-m-d");
$directory = "comics";


$sql_lastcomic = $conn->prepare("SELECT * FROM comics WHERE story = ? AND `date` <= ? ORDER BY `date` DESC, id DESC LIMIT 1");
$sql_lastcomic->bind_param('ss', $directory, $today);
Run Code Online (Sandbox Code Playgroud)

效果很好,除了我希望它始终查看我的时区,而不是用户的时区。这样,每个人都会同时发布更新。

我查看了的文档gettimeofday(),但不确定如何修改它。还是应该修改我的MySQL语句?假设我要使用山区时间作为我的时区。

Kar*_*hik 5

对于美国/纽约时区

$today = new DateTime("now", new DateTimeZone('America/New_York') );
echo $today->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)


col*_*ner 5

正如@Karthik所说,您可以使用DateTimezone对象获取时区。

这是文档的链接

例:

$tz = 'America/New_York';
$tz_obj = new DateTimeZone($tz);
$today = new DateTime("now", $tz_obj);
$today_formatted = $today->format('Y-m-d');
$directory = "comics";

$query = "
SELECT *
FROM comics
WHERE story = ?
AND `date` <= ?
ORDER BY `date` DESC, id DESC 
LIMIT 1"

$prepped = $conn->prepare($query);
$prepped->bind_param('ss', $directory, $today_formatted);
Run Code Online (Sandbox Code Playgroud)