]> source.dussan.org Git - poi.git/commitdiff
Fix some Forbidden APIs errors
authorNick Burch <nick@apache.org>
Tue, 1 Sep 2015 21:31:02 +0000 (21:31 +0000)
committerNick Burch <nick@apache.org>
Tue, 1 Sep 2015 21:31:02 +0000 (21:31 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1700675 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/ss/format/CellDateFormatter.java
src/java/org/apache/poi/ss/formula/functions/WeekNum.java
src/java/org/apache/poi/util/HexRead.java

index 30c6e2275d294b7d1001c9269d96fda02cc8b6ff..0e6cfa15b4aa415d75e22c751e98131e49dd8b9a 100644 (file)
@@ -24,14 +24,19 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.Formatter;
 import java.util.Locale;
+import java.util.TimeZone;
 import java.util.regex.Matcher;
 
 /**
  * Formats a date value.
- *
- * @author Ken Arnold, Industrious Media LLC
  */
 public class CellDateFormatter extends CellFormatter {
+    /**
+     * Excel doesn't store TimeZone information in the file, so if in doubt,
+     *  use UTC to perform calculations
+     */
+    private static final TimeZone DEFAULT_TIMEZONE = TimeZone.getTimeZone("UTC");
+    
     private boolean amPmUpper;
     private boolean showM;
     private boolean showAmPm;
@@ -45,7 +50,7 @@ public class CellDateFormatter extends CellFormatter {
             "mm/d/y");
 
     static {
-        Calendar c = Calendar.getInstance();
+        Calendar c = Calendar.getInstance(DEFAULT_TIMEZONE, Locale.ROOT);
         c.set(1904, 0, 1, 0, 0, 0);
         EXCEL_EPOCH_DATE = c.getTime();
         EXCEL_EPOCH_TIME = c.getTimeInMillis();
@@ -183,7 +188,7 @@ public class CellDateFormatter extends CellFormatter {
                 if (!doneMillis) {
                     Date dateObj = (Date) value;
                     int pos = toAppendTo.length();
-                    Formatter formatter = new Formatter(toAppendTo);
+                    Formatter formatter = new Formatter(toAppendTo, Locale.ROOT);
                     try {
                         long msecs = dateObj.getTime() % 1000;
                         formatter.format(LOCALE, sFmt, msecs / 1000.0);
index 9cfd26fe5ce5d795a0890952b33a517fc4f0ab5e..f27ee7e30a9ed94eeac55b55d63e29f723c16854 100644 (file)
@@ -24,6 +24,7 @@ import org.apache.poi.ss.usermodel.DateUtil;
 import java.util.Calendar;\r
 import java.util.GregorianCalendar;\r
 import java.util.Locale;\r
+import java.util.TimeZone;\r
 \r
 /**\r
  * Implementation for Excel WeekNum() function.<p/>\r
@@ -39,10 +40,13 @@ import java.util.Locale;
  * Return_type     is a number that determines on which day the week begins. The default is 1.\r
  * 1   Week begins on Sunday. Weekdays are numbered 1 through 7.\r
  * 2   Week begins on Monday. Weekdays are numbered 1 through 7.\r
- *\r
- * @author cedric dot walter @ gmail dot com\r
  */\r
 public class WeekNum extends Fixed2ArgFunction implements FreeRefFunction {\r
+    /**\r
+     * Excel doesn't store TimeZone information in the file, so if in doubt,\r
+     *  use UTC to perform calculations\r
+     */\r
+    private static final TimeZone DEFAULT_TIMEZONE = TimeZone.getTimeZone("UTC");\r
 \r
     public static final FreeRefFunction instance = new WeekNum();\r
 \r
@@ -53,7 +57,7 @@ public class WeekNum extends Fixed2ArgFunction implements FreeRefFunction {
         } catch (EvaluationException e) {\r
             return ErrorEval.VALUE_INVALID;\r
         }\r
-        Calendar serialNumCalendar = new GregorianCalendar(Locale.ROOT);\r
+        Calendar serialNumCalendar = new GregorianCalendar(DEFAULT_TIMEZONE, Locale.ROOT);\r
         serialNumCalendar.setTime(DateUtil.getJavaDate(serialNum, false));\r
 \r
         int returnType = 0;\r
index 51b0ceeb2eac641f496345e32df121e49f4cc56e..d8fdbbbb5c2a2322ee546ff5aafee798b5a60a8c 100644 (file)
@@ -24,9 +24,6 @@ import java.util.ArrayList;
 /**
  * Utilities to read hex from files.
  * TODO - move to test packages
- *
- * @author Marc Johnson
- * @author Glen Stampoultzis (glens at apache.org)
  */
 public class HexRead
 {
@@ -174,7 +171,7 @@ public class HexRead
 
     static public byte[] readFromString(String data) {
         try {
-            return readData(new ByteArrayInputStream( data.getBytes() ), -1);
+            return readData(new ByteArrayInputStream( data.getBytes(StringUtil.UTF8) ), -1);
         } catch (IOException e) {
             throw new RuntimeException(e);
         }