Yes, that works too. I'd decided to use local times for both DateTimes with the UTCOffset being used explicitly to avoid future confusion. In other words, to avoid needing to explain why the local time (expressed in UTC) less the January 1, 1970 (expressed in the local time zone) should give you the number of seconds since the epoch (January 1, 1970 0:00:00 UTC).
Regards, Mike Blake-Knox email: [EMAIL PROTECTED] TSYS Office: (706) 644-3643 cellphone: (706) 570-4641 > -----Original Message----- > From: Nicko Cadell [mailto:[EMAIL PROTECTED] > Sent: Thursday, August 19, 2004 6:23 PM > To: Log4NET User > Subject: RE: XmlLayoutSchemaLog4j timestamp > > Mike, > > So if we keep s_date1970 as UTC and just convert the event > TimeStamp to UTC before getting the difference it should work right: > > DateTime s_date1970 = new DateTime(1970, 1, 1); > > ... > > TimeSpan timeSince1970 = > loggingEvent.TimeStamp.ToUniversalTime() - s_date1970; > > That should be equivalent to subtracting the time zone UTC offset. > > Nicko > > > -----Original Message----- > > From: Mike Blake-Knox [mailto:[EMAIL PROTECTED] > > Sent: 19 August 2004 19:52 > > To: 'Log4NET User' > > Subject: RE: XmlLayoutSchemaLog4j timestamp > > > > Nicko, > > > > I found I was having problems with daylight savings time > and needed to > > change the calculation (but not the static s_date1970). I'm > now using: > > > > // Calculate the timestamp as the > > number of milliseconds since January 1970 UTC/GMT > > // Note that the offset between local > time and GMT changes when > > daylight saving time starts and ends > > TimeSpan timeSince1970 = > > loggingEvent.TimeStamp - s_date1970 > > - > > localZone.GetUtcOffset(loggingEvent.TimeStamp); > > > > The root of the problem seems to be Windows' unique method > of keeping > > the timezone (difference to UTC) information in the DateTime object > > but not changing it when the time is changed to UTC. As the > difference > > between local time and UTC changes when you start or stop daylight > > savings time and my servers need to keep on logging, the > value must be > > determined for each timestamp. > > > > I've tested it with various winter and summer times (including one > > from a Microsoft blog) and chainsaw showed the correct time. > > > > I've picked up a lot of sympathy for the winCVS developers > who, a few > > years ago, had great difficulty extracting sensible times > from Samba > > and SMB shares. > > > > Regards, > > > > Mike Blake-Knox > > email: [EMAIL PROTECTED] > > TSYS Office: (706) 644-3643 > > cellphone: (706) 570-4641 > > > > > > > -----Original Message----- > > > From: Nicko Cadell [mailto:[EMAIL PROTECTED] > > > Sent: Thursday, August 19, 2004 1:41 PM > > > To: Log4NET User > > > Subject: RE: XmlLayoutSchemaLog4j timestamp > > > > > > Mike, > > > > > > I must have been up late when I wrote that! The CVS code has been > > > changed to: > > > > > > DateTime s_date1970 = new DateTime(1970, 1, 1); > > > > > > Which should do the job. > > > > > > Cheers, > > > Nicko > > > > > >
