[jcifs] timezone problems

Eric eglass1 at comcast.net
Fri Mar 12 00:17:19 GMT 2004


Attached is another test case that would seem to confirm Julian's 
observations.  This does the following:

1) creates a file on a share via java.io.File with a UNC path.

2) Sets the last modified attribute via File.setLastModified, and reads 
via File.lastModified.

3) Sets the last modified attribute on the same file via 
SmbFile.setLastModified, and reads via SmbFile.lastModified.

4) Sets the last modified via File.setLastModified, and reads via 
SmbFile.lastModified.

5) Sets the last modified via SmbFile.setLastModified, and reads via 
File.lastModified.

Here's what I get when I run this:

Summer is 07/04/2003 15:00
Winter is 01/04/2003 15:00

java.io.File set/read:
07/04/2003 15:00
01/04/2003 15:00

jcifs.smb.SmbFile set/read:
07/04/2003 15:00
01/04/2003 15:00

java.io.File set, jcifs.smb.SmbFile read:
07/04/2003 14:00
01/04/2003 15:00

jcifs.smb.SmbFile set, java.io.File read:
07/04/2003 16:00
01/04/2003 15:00


We appear to be internally consistent, but inconsistent with the 
behavior observed for java.io.File.


Eric
-------------- next part --------------
import java.io.File;

import java.text.DateFormat;
import java.text.SimpleDateFormat;

import java.util.Date;

import jcifs.Config;

import jcifs.smb.SmbFile;

public class TestDate {

    private static final String SUMMER = "07/04/2003 15:00";

    private static final String WINTER = "01/04/2003 15:00";

    // pass an SMB url to a file, i.e. smb://server/share/dir/file.txt
    public static void main(String[] args) throws Exception {
        Config.setProperty("jcifs.smb.client.attrExpirationPeriod", "0");
        String url = args[0];
        DateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm");
        long summer = format.parse(SUMMER).getTime();
        long winter = format.parse(WINTER).getTime();
        System.out.println("Summer is " + SUMMER);
        System.out.println("Winter is " + WINTER);
        System.out.println();
        SmbFile smbFile = new SmbFile(url);
        File ioFile = new File(smbFile.getUncPath());
        ioFile.createNewFile();
        System.out.println("java.io.File set/read:");
        ioFile.setLastModified(summer);
        System.out.println(format.format(new Date(ioFile.lastModified())));
        ioFile.setLastModified(winter);
        System.out.println(format.format(new Date(ioFile.lastModified())));
        System.out.println();
        System.out.println("jcifs.smb.SmbFile set/read:");
        smbFile.setLastModified(summer);
        System.out.println(format.format(new Date(smbFile.lastModified())));
        smbFile.setLastModified(winter);
        System.out.println(format.format(new Date(smbFile.lastModified())));
        System.out.println();
        System.out.println("java.io.File set, jcifs.smb.SmbFile read:");
        ioFile.setLastModified(summer);
        System.out.println(format.format(new Date(smbFile.lastModified())));
        ioFile.setLastModified(winter);
        System.out.println(format.format(new Date(smbFile.lastModified())));
        System.out.println();
        System.out.println("jcifs.smb.SmbFile set, java.io.File read:");
        smbFile.setLastModified(summer);
        System.out.println(format.format(new Date(ioFile.lastModified())));
        smbFile.setLastModified(winter);
        System.out.println(format.format(new Date(ioFile.lastModified())));
    }

}



More information about the jcifs mailing list