Apply patch from bug #48924 - Allow access of the HWPF DateAndTime underlying date values
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@948455 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
6666c539da
commit
0df94e6be8
@ -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>
|
||||
|
@ -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);
|
||||
@ -49,6 +51,21 @@ public final class DateAndTime
|
||||
_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)
|
||||
{
|
||||
LittleEndian.putShort(buf, offset, _info);
|
||||
|
Loading…
Reference in New Issue
Block a user