Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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 .ICS文件,在保存该文件时显示1小时的时间差_Php_Icalendar - Fatal编程技术网

Php .ICS文件,在保存该文件时显示1小时的时间差

Php .ICS文件,在保存该文件时显示1小时的时间差,php,icalendar,Php,Icalendar,我有一个向用户发送日历约会的程序。然而,这些用户在许多不同的时区。当我创建.ics文件时,我创建了GMT时区的时间,因为我们的服务器时区是GMT。然后,它们会被发送给分散在许多时区的用户。当他们保存.ics文件时,收到的是1小时的不同时间 例如,我安排了8月8日11:30-12:30的约会,它显示了8月8日12:30-13:30 我的ICS代码如下: BEGIN:VCALENDAR VERSION:2.0 PRODID:-//test.com//NONSGML kigkonsult.se iCa

我有一个向用户发送日历约会的程序。然而,这些用户在许多不同的时区。当我创建.ics文件时,我创建了GMT时区的时间,因为我们的服务器时区是GMT。然后,它们会被发送给分散在许多时区的用户。当他们保存.ics文件时,收到的是1小时的不同时间

例如,我安排了8月8日11:30-12:30的约会,它显示了8月8日12:30-13:30

我的ICS代码如下:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//test.com//NONSGML kigkonsult.se iCalcreator 2.18//
METHOD:PUBLISH
X-WR-TIMEZONE:Europe/London
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
UID:20140806T175536-69581448@test.com
DTSTAMP:20140806T122536Z
DESCRIPTION:Teste
DTSTART:20140808T063000Z
DTEND:20140808T070000Z
LOCATION:
SEQUENCE:0
SUMMARY:Test
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Test
TRIGGER:-PT0H15M0S
END:VALARM
END:VEVENT
END:VCALENDAR

此代码由php代码生成。

您将时区定义为使用夏令时的欧洲/伦敦,并在UTC中定义DTSTART/DTEND,因为UTC没有夏令时。

由于UTC 11:30是英国夏季12:30,我强烈怀疑这里没有问题。邀请函中的UTC时间是明确的。您的日历应用程序知道您的时区,并已在您的本地夏令时显示会议。在东京和悉尼收到相同邀请的人也将看到在他们当地时区显示的会议。

您能为我提供一个DTSTART和夏令时DTEND的示例吗。DTSTART;TZID=欧洲/伦敦:20140819T000000,末尾没有Z,但我必须从欧洲/伦敦时区发送不同的时区。可能被任命居住在亚洲/加尔各答。因此,如何制作这些类型的apointment您的被任命人的日历应用程序应该注意这一点,添加日历项并计算欧洲/伦敦和亚洲/加尔各答之间的差异。另一种方法是,尽可能使用UTC日期时间,因此您需要在应用程序中计算欧洲/伦敦->UTC,并在所有UTCYE中保存.ics,他们在自己的时区收到邀请,但时间将再延长1小时。因为我选择了亚洲/加尔各答时区和1300时间。我收到了1400次亚洲/加尔各答时区展望。