Datetime iCAL DTSTART和DTEND格式混乱。应该很容易回答

Datetime iCAL DTSTART和DTEND格式混乱。应该很容易回答,datetime,timezone,icalendar,Datetime,Timezone,Icalendar,我正在写一个iCAL文件。我在一艘游轮上工作,这个文件基本上就是我未来6个月的行程,我想和其他船员分享,并显示在我们的手机上(iphone和Android手机的混合体)。我想包括我们访问的港口的名称,以及到达和离开的时间。到目前为止,很容易 但是,在游轮上,我们几乎每天都要经过不同的时区。有些人使用本地运营商信息来设置手机时区,有些人则手动调整时区,有些人则不用费心去做。我以前试过一次,但对时区格式感到非常困惑:是否使用带“Z”前缀的UTC,是否指定国家代码,等等 然而,最近谷歌搜索发现了“浮动

我正在写一个iCAL文件。我在一艘游轮上工作,这个文件基本上就是我未来6个月的行程,我想和其他船员分享,并显示在我们的手机上(iphone和Android手机的混合体)。我想包括我们访问的港口的名称,以及到达和离开的时间。到目前为止,很容易

但是,在游轮上,我们几乎每天都要经过不同的时区。有些人使用本地运营商信息来设置手机时区,有些人则手动调整时区,有些人则不用费心去做。我以前试过一次,但对时区格式感到非常困惑:是否使用带“Z”前缀的UTC,是否指定国家代码,等等

然而,最近谷歌搜索发现了“浮动”DTSTART和DTEND格式,也就是“本地时间”,这似乎废除了所有的地区和时区规范。那么,我认为下面的方法行得通吗

(来源数据:11月23日,里约热内卢,上午8:00至下午6:00,
11月25日,另一个港口,上午10:00至晚上8:30)

如果该语法正确,那么我是否仍然需要使用“Z”后缀指定DTSTAMP:20171123T080000NZ?(我在书中读到的一些内容说,尽管我不想使用UTC,但“Z”后缀是必须的,我只想要浮动的开始和结束时间。)

此外,每个事件的DTSTAMP时间应该与DTSTART时间相同,还是每个事件都使用相同的DTSTAMP时间

我希望你能帮忙

谢谢

英里,
音乐家,

名人无限

使用浮动时间意味着实际使用的时区实际上在活动观众的时区中

因此,如果您将某项活动安排在晚上8点浮动时间,“用户A”的时区设置为东部,现在是晚上7点55分,活动将在5分钟后发生,那么将手机设置为中部时间的用户“B”将看到活动从现在开始1小时+5分钟

换句话说,使用浮动时间意味着用户查看的实际时间将取决于事件的查看者

这不是你想要的。因为你要准时到达和离开。您确实有两种选择:

  • 使用UTC
  • 使用本地时间+端口的时区
  • UTC在您的情况下可能更简单,但有一个警告。你提到里约热内卢,巴西对夏令时(DST)的处理并不出色

    因此,你可能计划在当地时间下午2点到达某个地方,但在你到达之前几周,巴西政府决定推迟或取消当年的夏令时。问题是,从UTC的角度来看,这艘船是在一小时后(还是当地时间下午2点)启航,还是在同一时间启航

    你可能会认为这是一个边缘情况,如果需要的话,做出调整,但我认为值得讨论这种情况。

    不管怎样,忽略这一点,“本地时间+TZ”或“UTC”对您来说都可能足够好了。如果您使用“美国/圣保罗”作为出发时间,那么人员:

    • 自动从运营商处获得时间和时区,它将“正常工作”
    • 手动更改他们的时区,这将“正常工作”

    我想我更喜欢本地时间+TZ,因为它是事件最“准确”的表示。

    使用浮动时间意味着实际使用的时区实际上在事件查看器的时区中

    因此,如果您将某项活动安排在晚上8点浮动时间,“用户A”的时区设置为东部,现在是晚上7点55分,活动将在5分钟后发生,那么将手机设置为中部时间的用户“B”将看到活动从现在开始1小时+5分钟

    换句话说,使用浮动时间意味着用户查看的实际时间将取决于事件的查看者

    这不是你想要的。因为你要准时到达和离开。您确实有两种选择:

  • 使用UTC
  • 使用本地时间+端口的时区
  • UTC在您的情况下可能更简单,但有一个警告。你提到里约热内卢,巴西对夏令时(DST)的处理并不出色

    因此,你可能计划在当地时间下午2点到达某个地方,但在你到达之前几周,巴西政府决定推迟或取消当年的夏令时。问题是,从UTC的角度来看,这艘船是在一小时后(还是当地时间下午2点)启航,还是在同一时间启航

    你可能会认为这是一个边缘情况,如果需要的话,做出调整,但我认为值得讨论这种情况。

    不管怎样,忽略这一点,“本地时间+TZ”或“UTC”对您来说都可能足够好了。如果您使用“美国/圣保罗”作为出发时间,那么人员:

    • 自动从运营商处获得时间和时区,它将“正常工作”
    • 手动更改他们的时区,这将“正常工作”

    我想我更喜欢当地时间+TZ,因为它是对活动最“准确”的描述。

    嗨,埃弗特,非常感谢你非常详细的回答!然而,我想要的是一个日历条目,显示上午10点到下午6点,无论我在哪个时区。例如,如果我在阿根廷,比如说12月3日,我想知道返航时间是下午6点。但如果我12月1日在巴西,滚动日历查看接下来的几天,我想知道2天后阿根廷的返航时间仍然是下午6点。所以我想要的是一个静态的时间条目,每天都不会改变。我想这是DTSTART和DTEND,没有“Z”后缀。Hi@Evert不确定上述条目是否会通知您我的评论,因此我添加了
        BEGIN:VCALENDAR
        VERSION:2.0
        PRODID: MyNameHere
        BEGIN:VEVENT
        UID:milesmuso.mf@qwertyqwertyqwerty.com
        DTSTAMP:20171123T080000Z
        DTSTART:20171123T080000
        DTEND:20171123T180000
        SUMMARY:Rio De Janiero
        END:VEVENT
        .
        BEGIN:VEVENT
        UID:milesmuso.mf@qwertyqwertyqwerty.com
        DTSTAMP:20171125T100000Z
        DTSTART:20171125T100000
        DTEND:20171125T203000
        SUMMARY:Another Port
        END:VEVENT
        .
        .
        BEGIN: VEVENT
        (next event here)
        END VEVENT
        END:VCALENDAR