Subject: Re: [calsify] When is DUE;VALUE=DATE:2022-01-23 overdue?

From: Dilyan Palauzov <[email-masked]>
Date: Mon, 07 Feb 2022 11:23:03 +0000

Dear all,

currently different software has different opinions on when is  
DUE;VALUE=DATE:20220123 overdue.  When 23rd January has just started,  
or when 23rd January ended?

I kindly ask you to state your opinion on this question.  The email  
below goes in details.

Having a discussion on this will make possible to align different  
applications to a coherent interpretation.

Greetings
   Дилян

----- Message from Dilyan Palauzov <[email-masked]> ---------
    Date: Sun, 23 Jan 2022 06:09:56 +0000
    From: Dilyan Palauzov <[email-masked]>
Subject: [calsify] When is DUE;VALUE=DATE:2022-01-23 overdue?
      To: [email-masked]

> Hello,
>
> calendar/task applications have the notion to highlight overdue  
> tasks somehow, e.g. by colouring them in red or spelling the word  
> “overdue”.
>
> When shall an application mark DUE;VALUE=DATE:2022-01-23 as overdue?
>
> A) When the midnight 22/23 January passes.  At 2022-01-22T23:59:59  
> it is not overdue.  At 2022-01-23T00:00:01 it is overdue.
> B) When the midnight 23/24 January passes.  At 2022-01-23T23:59:59  
> it is not overdue.  At 2022-01-24T00:00:01 it is overdue.
>
> https://datatracker.ietf.org/doc/html/rfc5545#page-57 contains an  
> example of such a task.  For some readers this example is not clear  
> enough which midnight is meant (the 30 Apr/1 May midnight, or the  
> 1/2 may Midnight).
>
> Some task applications take the A) approach, others take the B) approach.
>
>
> I will ask the same question in a completely different way.
>
> https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.2.2 says  
> for VTODO: the value of the "DUE" property must be later in time  
> than the value of the "DTSTART" property.
>
> An event which lasts only today, is written as:
> BEGIN:VEVENT
> DTSTART;VALUE=DATE:20220123
> DTEND;VALUE=DATE:20220124
> END:VEVENT
>
> How do you write a task, which starts today (may not be performed  
> yesterday) and must be completed on the day it started?
> C)
> BEGIN:VTODO
> DTSTART;VALUE=DATE:20220123
> DUE;VALUE=DATE:20220124
> END:VTODO
>
> or D)
> BEGIN:VTODO
> DTSTART;VALUE=DATE:20220123
> DUE;VALUE=DATE:20220123
> END:VTODO
>
> C) is very close to how “one whole day event” is written. D)  
> violates «the value of the "DUE" property must be later in time than  
> the value of the "DTSTART" property» rule.
>
> Some applications implement C), others implement D).
>
> Greetings
>   Дилян

----- End message from Dilyan Palauzov <[email-masked]> -----

---

From: "Neil Jenkins" <[email-masked]>
Date: Tue, 08 Feb 2022 23:36:20 +1100

> or when 23rd January ended?

I agree RFC5545 is slightly ambiguous, but my reading of both the DUE definition and the example in the spec leans towards it meaning the *start* of 23rd Jan for `DATE:20220123`.

—Neil