A fully robust solution would be to store event times in UTC in the database, which would require that you know the user's time zone so you can convert correctly when saving or retrieving the times.
However, since all of your users are in the same time zone you can use the same hack that I'm using, which is to adjust the times according to the timezone different when creating the calendar item for download.
This is a snippet from my Events_Download.ashx, with the changes highlighted (I *think* that this is all I did - it's been awhile). Note that you'll have to change the System.TimeSpan argument from -2 to -1 for your situation.
public void writeCalEntry(int EventID, TextWriter output, string url)
{
SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ClubSiteDB"].ConnectionString);
string qry = "SELECT Events.starttime, Events.endtime, Events.title, Events.description, Events.staticURL, Locations.title AS LocName, Locations.directions, ";
qry += "Locations.description AS locDesc, Locations.address ";
qry += "FROM Locations RIGHT OUTER JOIN ";
qry += "Events ON Locations.id = Events.location ";
qry += "WHERE (Events.id = @id)";
SqlCommand command = new SqlCommand(qry, connection);
SqlParameter param0 = new SqlParameter("@id", SqlDbType.Int);
param0.Value = EventID;
command.Parameters.Add(param0);
connection.Open();
DataTable dt = new DataTable();
dt.Load(command.ExecuteReader());
if (dt.Rows.Count > 0)
{
DataRow dr = dt.Rows[0];
System.DateTime starttime, endtime;
// Create a fudge factor to account for the hosting server being 2 hours West of all
// of the users (host is in Pacific time zone, users are in Central time zone).
// Fortunately, both host and users observe US Savings Time, so that aspect
// can be ignored.
System.TimeSpan tzconvert = new System.TimeSpan(0, -2, 0, 0);
string title, description, location;
StringBuilder sb = new StringBuilder();
object o;
// Extract the start and stop times, applying the time zone fudge factor
starttime = (DateTime)dr["starttime"] + tzconvert;
if (dr["endtime"] != DBNull.Value)
{
endtime = (DateTime)dr["endtime"] + tzconvert;
}
else
{
endtime = starttime;
}