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

时间:2016-12-16 04:34:58

标签: php mysql

我创建了一个漫画,并拥有一个包含指定日期的漫画页数据库。我希望获得最新约会的漫画,但不会为未来获得漫画。

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

  1. 2000年12月1日
  2. 二〇〇〇年十二月一十二日
  3. 二零零零年十二月三十零日
  4. 我将能够查询并获得漫画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);
    

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

    我查看了gettimeofday()的文档,但不确定如何修改它。或者我应该修改我的MySQL声明?我们只想说我想用山地时间作为我的时区。

4 个答案:

答案 0 :(得分:4)

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

Here's a link到文档。

示例:

$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);

答案 1 :(得分:3)

对于特定时区选择,您可以在使用date_default_timezone_setdate()功能之前使用time()

示例:

date_default_timezone_set('Asia/Dhaka');
// Then call the date functions
echo $date = date('Y-m-d H:i:s');

自PHP 5.2.0以来,您可以使用 OOP DateTime()进行操作(当然,如果您更喜欢OOP):

$now = new DateTime();
echo $now->format('Y-m-d H:i:s');    // MySQL datetime format
echo $now->getTimestamp();           // Unix Timestamp -- Since PHP 5.3

并指定timezone

$now = new DateTime(null, new DateTimeZone('Asia/Dhaka'));
$now->setTimezone(new DateTimeZone('Asia/Dhaka'));    // Another way
echo $now->getTimezone();

有关时区参考,请参阅List of Supported Timezones

一些有用的链接

答案 2 :(得分:1)

对于America / New_York时区

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

答案 3 :(得分:1)

date_default_timezone_set('Asia/Kolkata');
//this will set your default timezone,for your use set default timezone as yours
$time = strtotime(date('Y-m-d H:i'));

$date = date("d/m/Y g:i A", $time);

希望这有帮助