According to this description on innerjoin, all you have to do is set dtstart
and dtend
as YYYYMMDD
(no hours or below) where start is the day (of your party) and end the next day.
At least with thunderbird/sunbird this works flawlessly:
#!/usr/bin/perl
use strict;
use Data::ICal;
use Data::ICal::Entry::Event;
use File::Slurp;
my $calendar = Data::ICal->new();
my $event = Data::ICal::Entry::Event->new();
$event->add_properties(
summary => "my party",
description => "I'll cry if I want to",
dtstart => "20130906",
dtend => "20130907",
);
$calendar->add_entry($event);
write_file('sample.ics', $calendar->as_string);