nextcloud / nextcloud/calendar

Validation error in iCalendar: The supplied value (20260920T000000) is not a correct DATE

Open
#8,875 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug needs info
Dominant language
JavaScript
Stars
1.2k
Forks
332
Avg merge
16h 13m
Merged PRs (30d)
137

Description

Steps to reproduce
  1. Create an all-day event on iOS
  2. Add beginning and end time to the event, with end time being 00:00
  3. Wait for the sync

This does happen occasionally, but I have not been able to reliably reproduce this. It might only happen when events have been synced before, or with some weird time zone configuration.

Expected behavior

Even when the value 20260920T000000 is not a correct DATE value, this does happen on iOS and we cannot do much about it. So Nextcloud must accept this value and maybe just drop the T part of it.

Actual behavior

The event is not synced (silent data loss) and the client re-tries every few minutes, clogging the log files.

Calendar app version

6.5.4

CalDAV-clients used

iOS

Browser

No response

Client operating system

No response

Server operating system

Debian

Web server

None

Database engine version

None

PHP engine version

None

Nextcloud version

34.0.3

Updated from an older installed version or fresh install

None

List of activated apps

Nextcloud configuration

Web server error log

Log file
[webdav] Fehler: Validation error in iCalendar: The supplied value (20260920T000000) is not a correct DATE
	PUT /remote.php/dav/calendars/user/64BBB0A8-4EBE-4CF0-B89A-8305E70D406E/D2C40D17-C76D-40B4-AF41-9850751E1A2D.ics
	von *** redacted *** von user um 06.09.2026, 09:10:37



{
  "reqId": "K1i5qNHszkAWZVb2zKdw",
  "level": 3,
  "time": "2026-09-06T07:10:37+00:00",
  "remoteAddr": "*** redacted ***",
  "user": "user",
  "app": "webdav",
  "method": "PUT",
  "url": "/remote.php/dav/calendars/user/64BBB0A8-4EBE-4CF0-B89A-8305E70D406E/D2C40D17-C76D-40B4-AF41-9850751E1A2D.ics",
  "scriptName": "/remote.php",
  "message": "Validation error in iCalendar: The supplied value (20260920T000000) is not a correct DATE",
  "userAgent": "iOS/26.6.1 (23G83) dataaccessd/1.0",
  "version": "34.0.3.2",
  "exception": {
    "Exception": "Sabre\\DAV\\Exception\\UnsupportedMediaType",
    "Message": "Validation error in iCalendar: The supplied value (20260920T000000) is not a correct DATE",
    "Code": 0,
    "Trace": [
      {
        "file": "/var/www/html/3rdparty/sabre/dav/lib/CalDAV/Plugin.php",
        "line": 733,
        "function": "validateICalendar",
        "class": "Sabre\\CalDAV\\Plugin",
        "type": "->",
        "args": [
          "*** sensitive parameters replaced ***",
          "*** sensitive parameters replaced ***",
          false,
          {
            "__class__": "Sabre\\HTTP\\Request"
          },
          {
            "__class__": "Sabre\\HTTP\\Response"
          },
          false
        ]
      },
      {
        "file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
        "line": 89,
        "function": "beforeWriteContent",
        "class": "Sabre\\CalDAV\\Plugin",
        "type": "->",
        "args": [
          "*** sensitive parameters replaced ***",
          {
            "__class__": "OCA\\DAV\\CalDAV\\CalendarObject"
          },
          "*** sensitive parameters replaced ***",
          false
        ]
      },
      {
        "file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
        "line": 1133,
        "function": "emit",
        "class": "Sabre\\DAV\\Server",
        "type": "->",
        "args": [
          "beforeWriteContent",
          [
            "*** sensitive parameters replaced ***",
            {
              "__class__": "OCA\\DAV\\CalDAV\\CalendarObject"
            },
            "*** sensitive parameters replaced ***",
            false
          ]
        ]
      },
      {
        "file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php",
        "line": 492,
        "function": "updateFile",
        "class": "Sabre\\DAV\\Server",
        "type": "->",
        "args": [
          "*** sensitive parameters replaced ***"
        ]
      },
      {
        "file": "/var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php",
        "line": 89,
        "function": "httpPut",
        "class": "Sabre\\DAV\\CorePlugin",
        "type": "->",
        "args": [
          {
            "__class__": "Sabre\\HTTP\\Request"
          },
          {
            "__class__": "Sabre\\HTTP\\Response"
          }
        ]
      },
      {
        "file": "/var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php",
        "line": 472,
        "function": "emit",
        "class": "Sabre\\DAV\\Server",
        "type": "->",
        "args": [
          "method:PUT",
          [
            {
              "__class__": "Sabre\\HTTP\\Request"
            },
            {
              "__class__": "Sabre\\HTTP\\Response"
            }
          ]
        ]
      },
      {
        "file": "/var/www/html/apps/dav/lib/Connector/Sabre/Server.php",
        "line": 215,
        "function": "invokeMethod",
        "class": "Sabre\\DAV\\Server",
        "type": "->",
        "args": [
          {
            "__class__": "Sabre\\HTTP\\Request"
          },
          {
            "__class__": "Sabre\\HTTP\\Response"
          }
        ]
      },
      {
        "file": "/var/www/html/apps/dav/lib/Server.php",
        "line": 433,
        "function": "start",
        "class": "OCA\\DAV\\Connector\\Sabre\\Server",
        "type": "->",
        "args": []
      },
      {
        "file": "/var/www/html/apps/dav/appinfo/v2/remote.php",
        "line": 25,
        "function": "exec",
        "class": "OCA\\DAV\\Server",
        "type": "->",
        "args": []
      },
      {
        "file": "/var/www/html/remote.php",
        "line": 152,
        "args": [
          "/var/www/html/apps/dav/appinfo/v2/remote.php"
        ],
        "function": "require_once"
      }
    ],
    "File": "/var/www/html/3rdparty/sabre/dav/lib/CalDAV/Plugin.php",
    "Line": 873,
    "message": "Validation error in iCalendar: The supplied value (20260920T000000) is not a correct DATE",
    "exception": "{\"class\":\"Sabre\\DAV\\Exception\\UnsupportedMediaType\",\"message\":\"Validation error in iCalendar: The supplied value (20260920T000000) is not a correct DATE\",\"code\":0,\"file\":\"/var/www/html/3rdparty/sabre/dav/lib/CalDAV/Plugin.php:873\",\"trace\":\"#0 /var/www/html/3rdparty/sabre/dav/lib/CalDAV/Plugin.php(733): Sabre\\CalDAV\\Plugin->validateICalendar('BEGIN:VCALENDAR...', 'calendars/user/...', false, Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response), false)\\n#1 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\CalDAV\\Plugin->beforeWriteContent('calendars/user/...', Object(OCA\\DAV\\CalDAV\\CalendarObject), 'BEGIN:VCALENDAR...', false)\\n#2 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(1133): Sabre\\DAV\\Server->emit('beforeWriteCont...', Array)\\n#3 /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php(492): Sabre\\DAV\\Server->updateFile('calendars/user/...', 'BEGIN:VCALENDAR...', NULL)\\n#4 /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php(89): Sabre\\DAV\\CorePlugin->httpPut(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#5 /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php(472): Sabre\\DAV\\Server->emit('method:PUT', Array)\\n#6 /var/www/html/apps/dav/lib/Connector/Sabre/Server.php(215): Sabre\\DAV\\Server->invokeMethod(Object(Sabre\\HTTP\\Request), Object(Sabre\\HTTP\\Response))\\n#7 /var/www/html/apps/dav/lib/Server.php(433): OCA\\DAV\\Connector\\Sabre\\Server->start()\\n#8 /var/www/html/apps/dav/appinfo/v2/remote.php(25): OCA\\DAV\\Server->exec()\\n#9 /var/www/html/remote.php(152): require_once('/var/www/html/a...')\\n#10 {main}\"}",
    "CustomMessage": "Validation error in iCalendar: The supplied value (20260920T000000) is not a correct DATE"
  },
  "id": "6a9d1b694f874"
}
Browser log

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 in 3rdparty/sabre/dav/lib/CalDAV/Plugin.php at validateICalendar, then trace the PUT path through apps/dav/lib/Connector/Sabre/Server.php and apps/dav/lib/Server.php. Reproduce or construct the iOS-style DATE value and inspect the existing validation behavior. Done means the event is accepted and synced without repeated validation errors or data loss.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.