[jcifs] timezone problems

Julian Reschke julian.reschke at gmx.de
Mon Mar 8 23:29:55 GMT 2004


Christopher R. Hertel wrote:
> ...
> If the time being reported via SMB is based on the *server's* local time, 
> then the client must convert the time to the *client's* local time.  To do 
> this, it uses the server time reported in the SMB Negotiate Protocol 
> Response.  That's that weird bozosecond timestamp.  The client must 
> compare the server's time against its own local time to calculate the 
> difference.

Well, no. First of all, whatever the format on the wire is, JCifs needs 
to convert it to *UTC* (that is GMT w/o DST) first, because this is the 
format used by Java for timestamps (at least as java.io.File and SmbFile 
are concerned):

http://java.sun.com/j2se/1.4.2/docs/api/java/io/File.html#lastModified()

Conversion to local timezones and DST considerations need to be done in 
the code *on top of* JCifs (for instance, by construcing Java Date 
objects and by formatting them using Java's locale support).

> Note that calculating the time for display on the client does involve Java 
> doing a lot of time manipulations locally.  There's lots of opportunities 
> for subtle bugs at all levels.

Yes. But this shouldn't occur at that level. SmbFile is a filie I/O API, 
not a user interface, and it's supposed to use UTC, not local time (at 
least I would assume so because this is was java.io.File does).

> Does jCIFS return differnt values when running on, say, Linux vs. W2K and 
> accessing the same file?

I'll try tomorrow.

Regards, Julian


-- 
<green/>bytes GmbH -- http://www.greenbytes.de -- tel:+492512807760


More information about the jcifs mailing list