From: <zy...@us...> - 2010-02-22 22:55:36
|
Revision: 6981 http://jython.svn.sourceforge.net/jython/?rev=6981&view=rev Author: zyasoft Date: 2010-02-22 22:55:30 +0000 (Mon, 22 Feb 2010) Log Message: ----------- Fixed #1559 by refactoring time.strptime so it uses the same correct day of week conversion from Java's Calendar class Modified Paths: -------------- trunk/jython/src/org/python/modules/time/Time.java Modified: trunk/jython/src/org/python/modules/time/Time.java =================================================================== --- trunk/jython/src/org/python/modules/time/Time.java 2010-02-14 19:32:04 UTC (rev 6980) +++ trunk/jython/src/org/python/modules/time/Time.java 2010-02-22 22:55:30 UTC (rev 6981) @@ -255,26 +255,28 @@ throw Py.ValueError("timestamp out of range for platform time_t"); } cal.setTime(new Date((long)secs)); - // This call used to be needed to work around JVM bugs. - // It appears to break jdk1.2, so it's not removed. - // cal.clear(); - int dow = cal.get(Calendar.DAY_OF_WEEK)-2; - if (dow<0) - dow = dow+7; - // TBD: is this date dst? - boolean isdst = tz.inDaylightTime(cal.getTime()); + int isdst = tz.inDaylightTime(cal.getTime()) ? 1 : 0; + return toTimeTuple(cal, isdst); + } + + private static PyTimeTuple toTimeTuple(Calendar cal, int isdst) { + int dow = cal.get(Calendar.DAY_OF_WEEK) - 2; + if (dow < 0) { + dow += 7; + } return new PyTimeTuple(new PyInteger(cal.get(Calendar.YEAR)), - new PyInteger(cal.get(Calendar.MONTH)+1), - new PyInteger(cal.get(Calendar.DAY_OF_MONTH)), - new PyInteger(cal.get(Calendar.HOUR) + - 12*cal.get(Calendar.AM_PM)), - new PyInteger(cal.get(Calendar.MINUTE)), - new PyInteger(cal.get(Calendar.SECOND)), - new PyInteger(dow), - new PyInteger(cal.get(Calendar.DAY_OF_YEAR)), - new PyInteger(isdst ? 1 : 0)); + new PyInteger(cal.get(Calendar.MONTH) + 1), + new PyInteger(cal.get(Calendar.DAY_OF_MONTH)), + new PyInteger(cal.get(Calendar.HOUR) + + 12 * cal.get(Calendar.AM_PM)), + new PyInteger(cal.get(Calendar.MINUTE)), + new PyInteger(cal.get(Calendar.SECOND)), + new PyInteger(dow), + new PyInteger(cal.get(Calendar.DAY_OF_YEAR)), + new PyInteger(isdst)); } + /** * Convert a time argument that may be an optional float or None value to a * double. Throws a TypeError on failure. @@ -713,17 +715,7 @@ if (jformat.contains("zzz")) { isdst = cal.getTimeZone().inDaylightTime(cal.getTime()) ? 1 : 0; } - return new PyTuple(new PyObject[] { - new PyInteger(cal.get(Calendar.YEAR)), - new PyInteger(cal.get(Calendar.MONTH)+1), - new PyInteger(cal.get(Calendar.DAY_OF_MONTH)), - new PyInteger(cal.get(Calendar.HOUR) + 12*cal.get(Calendar.AM_PM)), - new PyInteger(cal.get(Calendar.MINUTE)), - new PyInteger(cal.get(Calendar.SECOND)), - new PyInteger((cal.get(Calendar.DAY_OF_WEEK)-2) % 7), // refactored for mon(0)-sun(6) - new PyInteger(cal.get(Calendar.DAY_OF_YEAR)), - new PyInteger(isdst) } - ); + return toTimeTuple(cal, isdst); } private static final String DEFAULT_FORMAT_PY = "%a %b %d %H:%M:%S %Y"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <zy...@us...> - 2010-10-04 17:28:11
|
Revision: 7133 http://jython.svn.sourceforge.net/jython/?rev=7133&view=rev Author: zyasoft Date: 2010-10-04 17:28:05 +0000 (Mon, 04 Oct 2010) Log Message: ----------- Handle boundary case where the last literal character in the strptime format specifier did not get an end quote. Fixes #1662. Modified Paths: -------------- trunk/jython/src/org/python/modules/time/Time.java Modified: trunk/jython/src/org/python/modules/time/Time.java =================================================================== --- trunk/jython/src/org/python/modules/time/Time.java 2010-10-03 21:14:29 UTC (rev 7132) +++ trunk/jython/src/org/python/modules/time/Time.java 2010-10-04 17:28:05 UTC (rev 7133) @@ -790,6 +790,9 @@ builder.append(translated != null ? translated : charAt); directive = false; } + if (inQuote) { + builder.append("'"); + } return builder.toString(); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |