nextcloud / nextcloud/server

[Bug]: When creating a task without time via CalDAV, the task is not interpreted as per specification RFC 5545

Open
#58,056 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. Needs triage 32-feedback bug feature: caldav
Dominant language
PHP
Stars
36.9k
Forks
5.2k
Avg merge
2d 3h
Merged PRs (30d)
713

Description

⚠️ This issue respects the following points: ⚠️
Bug description

When creating a task without time via CalDAV, the task is not interpreted as per specification RFC 5545 (iCalendar), but the day is shifted 1 day in UI. The specification provides following example:

Examples:  The following is an example of a "VTODO" calendar
      component that needs to be completed before May 1st, 2007.  On
      midnight May 1st, 2007 this to-do would be considered overdue.

       BEGIN:VTODO
       UID:20070313T123432Z-456553@example.com
       DTSTAMP:20070313T123432Z
       DUE;VALUE=DATE:20070501
       SUMMARY:Submit Quebec Income Tax Return for 2006
       CLASS:CONFIDENTIAL
       CATEGORIES:FAMILY,FINANCE
       STATUS:NEEDS-ACTION
       END:VTODO

The industry standard (eg. Microsoft Outlook) is that selecting a due date (no time) in the UI means that the task is considered overdue by the midnight at the end of the day. For example, selecting date 5.2.2026 means that you have time to finish the task up to 5.2.2026 23:59 (inclusively). The iCalendar specification, on the other hand, uses excluside due dates. Thus to represent the same UI choice one would have to use DUE;VALUE=DATE:20260206, ie. one day ahead.

Steps to reproduce

Create a CalDAV task according to example above. The UI will show date 01-May-2007 instead of 30-Apr-2007

Expected behavior

Due date is show as 30-Apr-2007

Nextcloud Server version

32

Operating system

None

PHP engine version

None

Web server

None

Database engine version

None

Is this bug present after an update or on a fresh install?

None

Are you using the Nextcloud Server Encryption module?

None

What user-backends are you using?
  • Default user-backend (database)
  • LDAP/ Active Directory
  • SSO - SAML
  • Other
Configuration report

List of activated Apps

Nextcloud Signing status

Nextcloud Logs

Additional info

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the CalDAV VTODO example from RFC 5545 and trace how its date-only DUE value is converted before reaching the UI. Compare that conversion with the reported 30-Apr-2007 expectation; done means the UI shows the specification-compatible due date without shifting it forward.

Written by the indexing model from the issue text.

Assessment

Domain
api, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.