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>
|
<changes>
|
||||||
<release version="3.7-SNAPSHOT" date="2010-??-??">
|
<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="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">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>
|
<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;
|
package org.apache.poi.hwpf.usermodel;
|
||||||
|
|
||||||
|
import java.util.Calendar;
|
||||||
|
|
||||||
import org.apache.poi.util.BitField;
|
import org.apache.poi.util.BitField;
|
||||||
import org.apache.poi.util.BitFieldFactory;
|
import org.apache.poi.util.BitFieldFactory;
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
@ -29,12 +31,12 @@ import org.apache.poi.util.LittleEndian;
|
|||||||
public final class DateAndTime
|
public final class DateAndTime
|
||||||
implements Cloneable
|
implements Cloneable
|
||||||
{
|
{
|
||||||
public static final int SIZE = 4;
|
public static final int SIZE = 4;
|
||||||
private short _info;
|
private short _info;
|
||||||
private static final BitField _minutes = BitFieldFactory.getInstance(0x3f);
|
private static final BitField _minutes = BitFieldFactory.getInstance(0x3f);
|
||||||
private static final BitField _hours = BitFieldFactory.getInstance(0x7c0);
|
private static final BitField _hours = BitFieldFactory.getInstance(0x7c0);
|
||||||
private static final BitField _dom = BitFieldFactory.getInstance(0xf800);
|
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 _months = BitFieldFactory.getInstance(0xf);
|
||||||
private static final BitField _years = BitFieldFactory.getInstance(0x1ff0);
|
private static final BitField _years = BitFieldFactory.getInstance(0x1ff0);
|
||||||
private static final BitField _weekday = BitFieldFactory.getInstance(0xe000);
|
private static final BitField _weekday = BitFieldFactory.getInstance(0xe000);
|
||||||
@ -49,6 +51,21 @@ public final class DateAndTime
|
|||||||
_info2 = LittleEndian.getShort(buf, offset + LittleEndian.SHORT_SIZE);
|
_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)
|
public void serialize(byte[] buf, int offset)
|
||||||
{
|
{
|
||||||
LittleEndian.putShort(buf, offset, _info);
|
LittleEndian.putShort(buf, offset, _info);
|
||||||
|
Loading…
Reference in New Issue
Block a user