Thanks for the java program Chris, I ran it on the version of the O/S where we
get the problem and got results that show a last modified date that differs by
one hour when the time changes due to DST.
Current GMT time (no DST): 2010-10-12 22:53:27 GMT
Current local time (with DST): 2010-10-12 15:53:28 PDT
File [/Aldon/Aldonls/tomcat20/lib/servlet-api.jar]
last modified timestamp: 1231267693000
the file was last modified 55656315 seconds ago
last modified as GMT time (no DST): 2009-01-06 18:48:13 GMT
last modified as local time: 2009-01-06 10:48:13 PST
Change date to: 03/13/10
java com.aldon.lifetime.permissions.test.TimeChange
'/Aldon/Aldonls/tomcat20/lib/servlet-api.jar'
Current GMT time (no DST): 2010-03-13 23:55:24 GMT
Current local time (with DST): 2010-03-13 15:55:24 PST
File [/Aldon/Aldonls/tomcat20/lib/servlet-api.jar]
last modified timestamp: 1231271293000
the file was last modified 37253231 seconds ago
last modified as GMT time (no DST): 2009-01-06 19:48:13 GMT
last modified as local time: 2009-01-06 11:48:13 PST
IBM has said they'll open a discussion with their development team and try to
get a fix out.
Thanks to everyone for all the help.
Jane
-----Original Message-----
From: Christopher Schultz [mailto:[email protected]]
Sent: Tuesday, October 12, 2010 11:08 AM
To: Tomcat Users List
Subject: Re: Disable class monitoring for reloading container classes
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
André,
On 10/10/2010 9:09 AM, André Warnier wrote:
> What would be really nice, is if someone wrote a quick Java equivalent
> to the perl script I submitted.
See below. There's actually more code than absolutely necessary, but it's more
straightforward this way.
> Now if you *really* insist, the modified version of the perl program,
> below, will explicitly use a couple of C functions, themselves using
> the builtin C structures to get the file's "last modified" time.
>
> Running C in perl, scary stuff..
Are you submitting an application for an obfuscated C program, here?
Sheesh. What's wrong with a little C code?
Amazing: the C code is shorter than the Java code. *shrug*
Time.java (apologies for any re-formatting done by my emailer)
- ---------
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimeZone;
public class Time
{
public static void main(String[] args)
throws Exception
{
if(args.length < 1)
{
System.out.println("Usage: java Time <filename>");
System.exit(1);
}
// GMT current time
Calendar now = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
System.out.println("Current GMT time (no DST): "
+ format(now));
// local current time
now = Calendar.getInstance(); // default = local
System.out.println("Current local time (with DST): "
+ format(now));
// File timestamp
System.out.println("File [" + args[0] + "]");
File file = new File(args[0]);
long timestamp = file.lastModified();
System.out.println("last modified timestamp: " + timestamp);
System.out.println("the file was last modified "
+ ((System.currentTimeMillis() - timestamp) /
1000)
+ " seconds ago");
Calendar tstamp = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
tstamp.setTimeInMillis(file.lastModified());
System.out.println("last modified as GMT time (no DST): "
+ format(tstamp));
tstamp = Calendar.getInstance(); // default=local
tstamp.setTimeInMillis(file.lastModified());
System.out.println("last modified as local time: "
+ format(tstamp));
}
public static String format(Calendar c)
{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
// format.setTimeZone(tz);
format.setTimeZone(c.getTimeZone());
return format.format(c.getTime());
}
}
time.c
- ------
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <sys/stat.h>
int main(int argc, char *argv[]) {
time_t now;
struct tm *gmt;
struct tm *local;
struct stat *fileinfo;
int retval;
char *filename;
if(argc < 2) {
printf("missing filename\n");
return 1;
}
filename = argv[1];
gmt = (struct tm*)malloc(sizeof(struct tm));
local = (struct tm*)malloc(sizeof(struct tm));
time(&now);
gmtime_r(&now, gmt);
localtime_r(&now, local);
/* note: asctime adds a newline */
printf("System raw timestamp: %ld\n", now);
printf("Current GMT time (no DST): %s", asctime(gmt));
printf("Current local time (with DST): %s", asctime(local));
fileinfo = (struct stat *)malloc(sizeof(struct stat));
printf("File [%s]:\n", filename);
if(stat(filename, fileinfo)) {
perror(filename);
} else {
gmtime_r(&(fileinfo->st_mtime), gmt);
localtime_r(&(fileinfo->st_mtime), local);
printf("last modified timestamp: %ld\n", (long)fileinfo->st_mtime);
printf("the file was last modified %ld seconds ago\n",
(now - fileinfo->st_mtime));
printf("last modified as GMT time (no DST): %s", asctime(gmt));
printf("last modified as local time (with DST): %s", asctime(local));
}
return 0;
}
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAky0o+QACgkQ9CaO5/Lv0PBbvACeLdBAsYKcpP95KkKvJQCNhBP5
TbUAnAxjQk/yLYhSvoq/uWbcl6b6mbv2
=7yhg
-----END PGP SIGNATURE-----
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]