我希望在指定时区获得给定时间的实时时间戳,以便在前端使用。
目前我可以设置时区,并获得时间。但我无法获得新的时间戳。
Carbon::setToStringFormat('U'); // Set __toString format
$instance = Carbon::createFromTimestamp('1460014482', "Europe/Kiev"); // Set global server timezone (or pickup from default PHP setting)
$instance->setTimezone("Indian/Maldives"); // Set user timezone
var_dump($instance->format('d M Y H:i:s')); // Shows the correct time +2 hours from Europe/Kiev
var_dump((string)$instance); // Shows the same timestamp specified in createFromTimestamp
var_dump(date('d M Y H:i:s', (string)$instance)) // So it won't show the timezone datetime
解释我如何获得给定时区的时间戳。 谢谢!
答案 0 :(得分:0)
您需要使用createFromFormat函数来使用setTimezone。以下是您的代码示例:
$originalDate = date("Y-m-d H:i:s", '1460014482');
$instance = Carbon::createFromFormat('Y-m-d H:i:s', $originalDate, 'Europe/Kiev');
$instance->setTimezone("Indian/Maldives");
希望它有所帮助。
答案 1 :(得分:0)
我知道它不是一个完整的解决方案。但它符合我的要求。 目前需要覆盖Carbon类的 __ toString 方法,我用它来显示日期时间戳。
public function __toString()
{
return static::$toStringFormat == 'U' ? (string)strtotime($this->format('Y-m-d H:i:s')) : $this->format(static::$toStringFormat);
}