The cause
Every timed event in an .ics file carries a time zone. Apple Calendar expects standard names like America/Los_Angeles. Outlook and Exchange often write Windows names instead:
DTSTART;TZID=Pacific Standard Time:20261005T100000DTSTART;TZID="(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi":20261005T100000
When the name isn't recognized, the event can be read in the wrong zone, and it shifts by the difference between the two.
Check the file
- Open the
.icsfile in a text editor on a computer (Notepad or TextEdit) - Search for
TZID= - If the value after it is a Windows name or a "(UTC±hh:mm)" label, that's the cause
Fix it by hand
- Replace each Windows name with its standard name, for example
Pacific Standard Time→America/Los_Angeles,Eastern Standard Time→America/New_York,China Standard Time→Asia/Shanghai,W. Europe Standard Time→Europe/Berlin - Replace it in the
TZID:line of theVTIMEZONEblock too - Save and open the file again on your iPhone
Also check Settings › Calendar › Time Zone Override. If it's on and set to another city, all events are shown in that zone.
Or let an app do it
ICS Import, which I built, maps Windows time zone names and "(UTC+hh:mm)" labels to the right zone before adding events, and shows each event's time so you can check it first. It's free for up to 3 events per import, with a one-time purchase for unlimited.
Get ICS ImportIf a file still comes out wrong, email mybosseatpoop@gmail.com with the file and the zone gets added.