PHP - 在特定时区获取当前时间
问题描述:
我创建了一个漫画,并拥有一个包含指定日期的漫画页面的数据库。我想用最新的日期获得漫画,但是不会为未来获得漫画。PHP - 在特定时区获取当前时间
换句话说,如果today
是2000年12月12日,和我有以下漫画:
- 2000年12月1日
- 2000年12月12日
- 12-30- 2000
我就能到目前为止查询并获得唯一的漫画1 & 2.
,我有d一个与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语句?我们只是说我想用Mountain Time作为我的时区。
答
正如@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);
答
为美国/纽约时间
区$today = new DateTime("now", new DateTimeZone('America/New_York'));
echo $today->format('Y-m-d');
答
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);
希望这有助于
答
对于具体的时区选择,你可以使用date()或time()函数之前使用date_default_timezone_set。
例子:
date_default_timezone_set('Asia/Dhaka');
// Then call the date functions
echo $date = date('Y-m-d H:i:s');
OR
由于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。
一些有用的链接
- gmdate() - 格式化 GMT/UTC日期/时间
- idate() - 格式化 本地时间/日期为整数
- getdate() - 获取 日期/时间信息
- getlastmod() - 获取最后一页修改时间
- mktime() - 获得UNIX 时间戳日期
- strftime() - 格式 本地时间/日期根据区域设置
- time() - 返回当前 Unix时间戳
- strtotime() - 任何英文文本的日期时间描述 解析为Unix 时间戳
- Predefined DateTime Constants
在这个答案的第一个例子是做到这一点的最简单方法 – khuderm