<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="390041" data-post-id="390041">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="aseigo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/aseigo/120/10674_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  aseigo
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="adamtulinius" data-post="21" data-topic="74370">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/adamtulinius/48/40335_2.png" class="avatar"> adamtulinius:</div>
<blockquote>
<p>I’m so fortunate to have to deal with ics-files generated by outlook 365, where all day events have dtstart/dtend set as just a date, and with no timezone information in the ics file.</p>
</blockquote>
</aside>
<p>Yes, all-day events are usually <code>TYPE=DATE</code> and without a timezone. According to the RFC, if they are <code>TYPE=DATE</code> then they can not have a timezone.</p>
<p>The idea is that “all day” events happen on <em>that calendar day</em>, not at some time period of a day. If one wants a time-shifting “all day” event, you need to set the time, even if it covers all 24 hours.</p>
<p>I suppose what would be possible is to provide an option that could be passed into <code>ICal.from_ics</code> (or <code>from_file</code>) which would define a “apply this timezone to everything in this calendar”, and perhaps another one that would coerce all <code>TYPE=DATE</code> entries into <code>DateTime</code>s with a timezone … but that probably would not produce results that match what Office265 intends/expects.</p>
<p>If you feel that the dates should be parsed as datetimes, or you simply would like them to be <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"> , please <a href="https://github.com/expothecary/ical/issues/new/choose" rel="noopener nofollow ugc">open an issue on the ICal repo</a> with a sample file (after removing any PII, of course) with a description of expected results and we can take it from there.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="390041" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ical-an-icalendar-library/74370/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-390041" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="390041"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #21"></div>
  </section>
</div>
    <div class="postbit" id="391352" data-post-id="391352">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="aseigo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/aseigo/120/10674_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  aseigo
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Version 3.0 has been release.</p>
<p>The major version bump is due to necessary changes in return types of some functions. This is due to the main feature of this release, namely:</p>
<p>ICal now properly supports “floating” datetimes, which are datetimes in the ICalendar data which explicitly do not have a timezone. They are equivalent to NaiveDateTimes.</p>
<p>This expands the compatibility of ICal with other ICalendar software and data files.</p>
<p>Thanks to Girish Gopaul for contributing to this release!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="391352" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ical-an-icalendar-library/74370/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-391352" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="391352"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #22"></div>
  </section>
</div>
    <div class="postbit" id="392816" data-post-id="392816">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="aseigo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/aseigo/120/10674_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  aseigo
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Version 3.2.0 is out!</p>
<p>3.1.0 was mostly a bugfix / minor improvements release, while 3.2.0 brings support for RC7953 VAVAILABILITY (courtesy of <a href="https://github.com/kipcole9" rel="noopener nofollow ugc">Kip Cole</a>) while significantly improving the performance of recurrence generation:</p>
<p><img src="https://forum.elixirforum.com/uploads/default/original/3X/9/a/9a58c6b45bb6516429da39a441e73eee7ab36510.png" alt="Screenshot_20260815_140443" data-base62-sha1="m1pJpX61hC6R8R5midU6U5X94WI" width="689" height="38" data-dominant-color="32373A"></p>
<p>A significant bottleneck are the timezone libraries. Interestingly, <code>time_zone_info</code> is c.a. 7x faster than <code>tz</code> on timezone intensive benchmarks, but c.a. 10%-15% <em>slower</em> on more typical use cases. Neither are exactly swift, so perhaps there is more to be gained from optimizing those libraries at this point.</p>
<p>The ICalendar standard for recurrence rules makes writing more performant recurrence generation rather difficult, as one can generate any number of recurrences that are linear in time while then picking only a few out of the bunch of them at the end. The intermediate values often need to be calculated just to find the Nth entry. You can probably guess <em>which</em> of the above benchmarks stress test the ICal implementation using that feature. <img src="https://forum.elixirforum.com/images/emoji/apple/confused.png?v=15" title=":confused:" class="emoji" alt=":confused:" loading="lazy" width="20" height="20"></p>
<p>I might look into the new(-ish) time interval library and see if there is any possibility to use that to improve things, or at least eliminate some code. Future work!</p>
<p>Contributions, as always, are welcome. Bug reports are also nice, and they are addressed usually within a day or two, but PRs are the gold standard of open source. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>ALSO: I would <img src="https://forum.elixirforum.com/images/emoji/apple/heart.png?v=15" title=":heart:" class="emoji" alt=":heart:" loading="lazy" width="20" height="20">  LOVE <img src="https://forum.elixirforum.com/images/emoji/apple/heart.png?v=15" title=":heart:" class="emoji" alt=":heart:" loading="lazy" width="20" height="20"> to hear how people are using this library. What kinds of projects are you using it in? What are your use cases?</p>
<p>.. until next release!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="392816" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/ical-an-icalendar-library/74370/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-392816" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="392816"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>