On Tue, 4 Mar 2008, Bill Moseley wrote:

I'm not very familiar with icalendar format.

http://search.cpan.org/src/DROLSKY/DateTime-Format-ICal-0.08/lib/DateTime/Format/ICal.pm

format_datetime() only adds the time if it's not 00:00:00:

   my $base =
       ( $dt->hour || $dt->min || $dt->sec ?
         sprintf( '%04d%02d%02dT%02d%02d%02d',
                  $dt->year, $dt->month, $dt->day,
                  $dt->hour, $dt->minute, $dt->second ) :
         sprintf( '%04d%02d%02d', $dt->year, $dt->month, $dt->day )
       );

   return $base if $tz->is_floating;

   return $base . 'Z' if $tz->is_utc;

   return 'TZID=' . $tz->name . ':' . $base;

I'm honestly not entirely sure why I bothered doing that (I think I mostly copied this code from Date::ICal), but I think it's ok.

I glanced over RFC 2445 and I don't see this as a problem.  But

Yes, RFC 2445 makes it clear that DTEND (and DTSTART) can be a DATE, rather than a full DATE-TIME, but ...

this "validator" at http://severinghaus.org/projects/icv/ reports:

Error: Error was: Error at line 181: Unparseable date: "20070424Z"
Cause: Caused by: Unparseable date: "20070424Z"

With the problem entry being:

   DTEND:20070424Z

Is this a problem with the validator?

I'm not sure. Looking more closely at RFC2445, it seems that a DATE value should not include a time zone.

I think the best thing to do is to simply always produce a DATE-TIME value. It's not like the fact that the time is midnight somehow means that the user wants less precision.


-dave

/*===================================================
VegGuide.Org                        www.BookIRead.com
Your guide to all that's veg.       My book blog
===================================================*/

Reply via email to