[ 
https://issues.apache.org/jira/browse/NET-710?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17844377#comment-17844377
 ] 

Jacob Vandborg commented on NET-710:
------------------------------------

I've tested a bit more and now see where I've made a mistake. While setting up 
the FTP client I'm not specifically setting the TZ of the server I'm connecting 
to. Because of this the LIST entries are parsed using the TZ of the machine 
running the FTP client and currently my machine is setup with TZ CET.

The following code will result in ParseException
{code:java}
public static void main(String[] args) throws ParseException {

    FTPClientConfig ftpClientConfig = new FTPClientConfig();
    ftpClientConfig.setServerTimeZoneId("CET"); // Wrong TZ for server just to 
demonstrate my mistake
    ftpClientConfig.setDefaultDateFormatStr("MMM d yyyy");
    ftpClientConfig.setRecentDateFormatStr("MMM d HH:mm");

    FTPTimestampParserImpl ftpTimestampParser = new FTPTimestampParserImpl();
    ftpTimestampParser.configure(ftpClientConfig);

    Calendar c = ftpTimestampParser.parseTimestamp("Mar 31 02:37", 
Calendar.getInstance());

}
{code}

The following code works and does not throw ParseException
{code:java}
public static void main(String[] args) throws ParseException {

    FTPClientConfig ftpClientConfig = new FTPClientConfig();
    ftpClientConfig.setServerTimeZoneId("UTC"); // Correct TZ for server
    ftpClientConfig.setDefaultDateFormatStr("MMM d yyyy");
    ftpClientConfig.setRecentDateFormatStr("MMM d HH:mm");

    FTPTimestampParserImpl ftpTimestampParser = new FTPTimestampParserImpl();
    ftpTimestampParser.configure(ftpClientConfig);

    Calendar c = ftpTimestampParser.parseTimestamp("Mar 31 02:37", 
Calendar.getInstance());

}
{code}

Thank you for your support Sebb and sorry for wasting your time.

Best regards,
Jacob

> Timestamp parsing fails around the change to daylight savings
> -------------------------------------------------------------
>
>                 Key: NET-710
>                 URL: https://issues.apache.org/jira/browse/NET-710
>             Project: Commons Net
>          Issue Type: Bug
>          Components: FTP
>    Affects Versions: 3.3, 3.8.0
>            Reporter: Mike Baranczak
>            Priority: Major
>
> {{String ts = "Mar 13 02:33";}}
> {{Calendar serverTime = Calendar.getInstance(TimeZone.getTimeZone("EDT"), 
> Locale.US);}}
> {{serverTime.set(2022, 2, 16, 14, 0);}}
> {{Calendar c = new FTPTimestampParserImpl().parseTimestamp(ts, serverTime);}}
>  
> {{Result:}}
>  
> {{java.text.ParseException: Timestamp 'Mar 13 02:33' could not be parsed 
> using a server time of Wed Mar 16 10:00:54 EDT 2022}}
> {{    at 
> org.apache.commons.net.ftp.parser.FTPTimestampParserImpl.parseTimestamp 
> (FTPTimestampParserImpl.java:246)}}
>  
> I can't tell what's going on, but this seems to have something to do with the 
> transition to Daylight Savings Time, which happened on Sunday, March 13. I 
> ran into this bug when trying to get a list of recent files from an FTP 
> server.  (UnixFTPEntryParser ignores the exception silently, which isn't a 
> great idea, either.)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to