]> source.dussan.org Git - poi.git/commitdiff
Apply patch from bug #48924 - Allow access of the HWPF DateAndTime underlying date...
authorNick Burch <nick@apache.org>
Wed, 26 May 2010 14:40:25 +0000 (14:40 +0000)
committerNick Burch <nick@apache.org>
Wed, 26 May 2010 14:40:25 +0000 (14:40 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@948455 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/status.xml
src/scratchpad/src/org/apache/poi/hwpf/usermodel/DateAndTime.java

index d1f3899f13ee03e7aa49f2570ef4f8c2bdd85d9f..05ed35d26094b7d9a3d30dce82d0c32b8c133804 100644 (file)
@@ -34,6 +34,7 @@
 
     <changes>
         <release version="3.7-SNAPSHOT" date="2010-??-??">
+           <action dev="POI-DEVELOPERS" type="add">48924 - Allow access of the HWPF DateAndTime underlying date values</action>
            <action dev="POI-DEVELOPERS" type="add">48926 - Initial support for the HWPF revision marks authors list</action>
            <action dev="POI-DEVELOPERS" type="fix">49160 - Ensure that CTDigSigBlob is included in poi-ooxml jar</action>
            <action dev="POI-DEVELOPERS" type="fix">49189 - Detect w:tab and w:cr entries in XWPF paragraphs, even when the XSD is silly and maps them to CTEmpty</action>
index 27626a515d9544a8197ddf0f19b0d66abe73586d..967fc92647b553087d3005562143eba2ffa5d79e 100644 (file)
@@ -17,6 +17,8 @@
 
 package org.apache.poi.hwpf.usermodel;
 
+import java.util.Calendar;
+
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.BitFieldFactory;
 import org.apache.poi.util.LittleEndian;
@@ -29,12 +31,12 @@ import org.apache.poi.util.LittleEndian;
 public final class DateAndTime
   implements Cloneable
 {
-  public static final int SIZE = 4;
-  private short _info;
+    public static final int SIZE = 4;
+    private short _info;
     private static final BitField _minutes = BitFieldFactory.getInstance(0x3f);
     private static final BitField _hours = BitFieldFactory.getInstance(0x7c0);
     private static final BitField _dom = BitFieldFactory.getInstance(0xf800);
-  private short _info2;
+    private short _info2;
     private static final BitField _months = BitFieldFactory.getInstance(0xf);
     private static final BitField _years = BitFieldFactory.getInstance(0x1ff0);
     private static final BitField _weekday = BitFieldFactory.getInstance(0xe000);
@@ -48,6 +50,21 @@ public final class DateAndTime
     _info = LittleEndian.getShort(buf, offset);
     _info2 = LittleEndian.getShort(buf, offset + LittleEndian.SHORT_SIZE);
   }
+  
+  public Calendar getDate() {
+     // TODO Discover if the timezone is stored somewhere else or not
+     Calendar cal = Calendar.getInstance();
+     cal.set(
+           _years.getValue(_info2)+1900, 
+           _months.getValue(_info2)-1, 
+           _dom.getValue(_info), 
+           _hours.getValue(_info), 
+           _minutes.getValue(_info),
+           0
+     );
+     cal.set(Calendar.MILLISECOND, 0);
+     return cal;
+  }
 
   public void serialize(byte[] buf, int offset)
   {