gpt4 book ai didi

php - 函数在 PHP DateTime 中的值?

转载 作者:搜寻专家 更新时间:2023-10-31 22:05:59 24 4
gpt4 key购买 nike

好吧,我对此束手无策。已经尝试解决这个问题 3 天了,但我一无所获。

我需要获取两个位置之间的 $offset 值,并将其从设定时间(即 (00:00))中扣除。

这是我设置 $offset 值的方法,效果很好。

<?php

if( isset($_POST['submit']))
{
//be sure to validate and clean your variables
$timezone1 = htmlentities($_POST['timezone1']);
$timezone2 = htmlentities($_POST['timezone2']);

//then you can use them in a PHP function.
function get_timezone_offset( $origin_tz, $remote_tz ) {
$timezone1 = new DateTimeZone ( $origin_tz );
$timezone2 = new DateTimeZone ( $remote_tz );

$datetime1 = new DateTime ("now", $timezone1);
$datetime2 = new DateTime ("now", $timezone2);

$offset = $timezone1->getOffset($datetime1) - $timezone2->getOffset($datetime2);
return $offset;

}

$offset = get_timezone_offset($timezone1, $timezone2);

}

?>

下面是我尝试使用 DateTime 做我想做的事情的方法,此代码只会回显 $offset 值,而不会将其从 00:00

<?php
if (0 > $offset)
{
// set an object with the current date
$date = new DateTime();
$date->setTime(00, 00);

// the second date
$date2 = new DateTime($offset/3600 * 1);

// apply the diff() method, getting a DateInterval object ($diDiff)
$diDiff = $date->diff($date2) ;
}
echo $diDiff->format("%H:%i");
?>

我什至尝试使用 strtotime,但 strtotime 返回了错误的值,stackoverflow 上的一些人建议我使用 DateTime。

<?php
$time1 = strtotime('00:00');

if (0 > $offset)
{
// For negative offset (hours behind)
$hour_dif = date('H:i', strtotime($time1 -$offset/3600));
$time1 = "{$hour_dif}";
}
elseif (0 < $offset)
{
// For positive offset (hours ahead)
$hour_dif = date('H:i', strtotime($time1 +$offset/3600));
$time1 = "{$hour_dif}";

}
else
{
// For offsets in the same timezone.
$time1 = "in the same timezone";
}

echo "{$time1}";
?>

请有人帮助我,因为这绝对是在浪费我的时间。

最佳答案

您也可以使用 Carbon 轻松解决此问题,一个将大大简化任何类型的日期计算的类:

// example timezones
$timezone1 = 'Europe/Berlin';
$timezone2 = 'Asia/Yakutsk';

$dt1 = Carbon::createFromDate(2000, 1, 1, $timezone1);
$dt2 = Carbon::createFromDate(2000, 1, 1, $timezone2);

// false will force a relative difference, so it can be a negative result
$difference = $dt1->diffInMinutes($dt2, false);

$dtMidnight = Carbon::create(2000, 1, 1, 12, 0, 0);

// get the difference from midnight
$differenceFromMidnight = $dtMidnight->addMinutes($difference);

echo $differenceFromMidnight->hour;
echo $differenceFromMidnight->minute;

关于php - 函数在 PHP DateTime 中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18529064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com