Browse Source

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
tags/REL_3_7_BETA1
Nick Burch 14 years ago
parent
commit
0012e7e039

+ 1
- 0
src/documentation/content/xdocs/status.xml View 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>

+ 20
- 3
src/scratchpad/src/org/apache/poi/hwpf/usermodel/DateAndTime.java View 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)
{

Loading…
Cancel
Save