Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将UTC0更改为UTC+;1/+;2._Php - Fatal编程技术网

Php 将UTC0更改为UTC+;1/+;2.

Php 将UTC0更改为UTC+;1/+;2.,php,Php,我从我的SQL数据库中得到了一个时间戳:$DBdata='2019-10-10 12:25:59',这个日期是UTC+0。我住在丹麦,那里有以下UTC 欧盟中部时间冬季(UTC+1) 欧盟中部夏季(UTC+2) 这些UTC从夏季到冬季的变化每年都有不同的日期 夏季时间 •2019年3月30日星期六至3月31日星期日之间的夜晚 •2020年3月28日星期六至3月29日星期日之间的夜晚 •2021年3月27日星期六至3月28日星期日之间的夜晚 •2022年3月26日星期六至3月27日星期日之间的夜晚

我从我的SQL数据库中得到了一个时间戳:
$DBdata='2019-10-10 12:25:59'
,这个日期是
UTC+0
。我住在丹麦,那里有以下UTC

欧盟中部时间冬季(UTC+1)

欧盟中部夏季(UTC+2)

这些UTC从夏季到冬季的变化每年都有不同的日期

夏季时间

•2019年3月30日星期六至3月31日星期日之间的夜晚

•2020年3月28日星期六至3月29日星期日之间的夜晚

•2021年3月27日星期六至3月28日星期日之间的夜晚

•2022年3月26日星期六至3月27日星期日之间的夜晚

•2023年3月25日星期六至3月26日星期日之间的夜晚

冬季时间

•2019年10月26日星期六至10月27日星期日之间的晚上

•2020年——10月24日星期六至10月25日星期日之间的夜晚

•2021年10月30日星期六至10月31日星期日之间的夜晚

•2022年10月29日星期六至10月30日星期日之间的夜晚

•2023年10月28日星期六至10月29日星期日之间的夜晚

是否可以使用正确的+1/+2进行if语句以更改这些UTC? 也许是这样的:

$Winter=gmdate('Y-m-d H:i:s',标准时间('WinterUTC');
$Summer=gmdate('Y-m-d H:i:s',标准时间('SummerUTC');
如果($$DBdata>=$Winter)&($$DBdata您可以使用和生成考虑时区的日期:

gmdate:格式化GMT/UTC日期/时间

返回:

2019-10-10 22:25:59
2019-10-10 14:25:59
2019-02-10 13:25:59
从文件中:

I
(大写字母I)日期是否在夏令时:
1
如果是夏令时,
0
否则

考虑到时区,您可以使用和生成日期:

gmdate:格式化GMT/UTC日期/时间

返回:

2019-10-10 22:25:59
2019-10-10 14:25:59
2019-02-10 13:25:59
从文件中:

I
(大写字母I)日期是否在夏令时:
1
如果是夏令时,
0
否则


这是php脚本默认时区的简单更改,然后显示时间:


这是php脚本默认时区的简单更改,然后显示时间:


使用DateTime类,您可以轻松地将日期/时间转换为任何其他时区

function convertTimeZone($strDateTime, $sourceTimeZone, $targetTimeZone){
  return date_create($strDateTime, new DateTimeZone($sourceTimeZone))
    ->setTimeZone(new DateTimeZone($targetTimeZone))
    ->format('Y-m-d H:i:s');
}
夏令时示例

$localTime = convertTimeZone('2019-10-10 12:25:59', 'UTC', 'Europe/Copenhagen');
echo $localTime."<br>";
冬季示例

$localTime = convertTimeZone('2019-02-10 12:25:59', 'UTC', 'Europe/Copenhagen');
echo $localTime."<br>";

注意:由于某些系统存在已知问题和限制,不建议使用基于stringtotime的解决方案。

使用DateTime类,您可以轻松地将日期/时间转换为任何其他时区

function convertTimeZone($strDateTime, $sourceTimeZone, $targetTimeZone){
  return date_create($strDateTime, new DateTimeZone($sourceTimeZone))
    ->setTimeZone(new DateTimeZone($targetTimeZone))
    ->format('Y-m-d H:i:s');
}
夏令时示例

$localTime = convertTimeZone('2019-10-10 12:25:59', 'UTC', 'Europe/Copenhagen');
echo $localTime."<br>";
冬季示例

$localTime = convertTimeZone('2019-02-10 12:25:59', 'UTC', 'Europe/Copenhagen');
echo $localTime."<br>";

注意:不推荐基于stringtotime的解决方案,因为某些系统存在已知问题和限制。

好的,我有这个日期:
$date='2019-09-25 11:19:50';
时区是
date\u default\u timezone\u set('Europe/Copenhagen')
,它应该打印出日期为2019-09-25 13:19:50
,但它没有打印出来?我做错了什么?我使用了
Y-m-d H:i:s
好的,我有这个日期:
$date='2019-09-25 11:19:50'
时区是
date\u default\u时区集('Europe/Copenhagen'))
,到了那个日期,它应该打印出来,但它没有打印出来?我做错了什么?我使用了
Y-m-d H:i:s
,这正是我想的!谢谢!!你能让它说是CET还是CEST吗?在像:2019-10-10 21:11:34这样的时间之后,使用格式字符串中的格式字符t添加CET/CEST.p.E-m-d H:i:s T'。请参阅:日期格式参数谢谢!我将尝试;)重要提示:PHP不能展望未来。如果欧盟取消夏季时间,您还需要更新PHP组件!这正是我所想的!谢谢!!您能让它说是CET还是CEST吗?时间过后,如:2019-10-10 21:11:34 CESTU在格式字符串中使用格式字符T添加CET/CEST.p.E.“Y-m-d H:i:s T”。请参阅:日期格式参数谢谢!我会试试;)重要提示:PHP不能展望未来。如果欧盟取消了夏季,您还需要更新PHP组件!