first commit
This commit is contained in:
131
hrmsEjb/jxl/write/biff/DateRecord.java
Normal file
131
hrmsEjb/jxl/write/biff/DateRecord.java
Normal file
@@ -0,0 +1,131 @@
|
||||
package jxl.write.biff;
|
||||
|
||||
import common.Logger;
|
||||
import java.text.DateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import jxl.Cell;
|
||||
import jxl.CellType;
|
||||
import jxl.DateCell;
|
||||
import jxl.biff.DoubleHelper;
|
||||
import jxl.biff.Type;
|
||||
import jxl.format.CellFormat;
|
||||
import jxl.write.DateFormats;
|
||||
import jxl.write.WritableCellFormat;
|
||||
|
||||
public abstract class DateRecord extends CellValue {
|
||||
private static Logger logger = Logger.getLogger(DateRecord.class);
|
||||
|
||||
private double value;
|
||||
|
||||
private Date date;
|
||||
|
||||
private boolean time;
|
||||
|
||||
private static final int utcOffsetDays = 25569;
|
||||
|
||||
private static final long msInADay = 86400000L;
|
||||
|
||||
static final WritableCellFormat defaultDateFormat = new WritableCellFormat(DateFormats.DEFAULT);
|
||||
|
||||
private static final int nonLeapDay = 61;
|
||||
|
||||
protected static final class GMTDate {}
|
||||
|
||||
protected DateRecord(int c, int r, Date d) {
|
||||
this(c, r, d, (CellFormat)defaultDateFormat, true);
|
||||
}
|
||||
|
||||
protected DateRecord(int c, int r, Date d, GMTDate a) {
|
||||
this(c, r, d, (CellFormat)defaultDateFormat, false);
|
||||
}
|
||||
|
||||
protected DateRecord(int c, int r, Date d, CellFormat st) {
|
||||
super(Type.NUMBER, c, r, st);
|
||||
this.date = d;
|
||||
calculateValue(true);
|
||||
}
|
||||
|
||||
protected DateRecord(int c, int r, Date d, CellFormat st, GMTDate a) {
|
||||
super(Type.NUMBER, c, r, st);
|
||||
this.date = d;
|
||||
calculateValue(false);
|
||||
}
|
||||
|
||||
protected DateRecord(int c, int r, Date d, CellFormat st, boolean tim) {
|
||||
super(Type.NUMBER, c, r, st);
|
||||
this.date = d;
|
||||
this.time = tim;
|
||||
calculateValue(false);
|
||||
}
|
||||
|
||||
protected DateRecord(DateCell dc) {
|
||||
super(Type.NUMBER, (Cell)dc);
|
||||
this.date = dc.getDate();
|
||||
this.time = dc.isTime();
|
||||
calculateValue(false);
|
||||
}
|
||||
|
||||
protected DateRecord(int c, int r, DateRecord dr) {
|
||||
super(Type.NUMBER, c, r, dr);
|
||||
this.value = dr.value;
|
||||
this.time = dr.time;
|
||||
this.date = dr.date;
|
||||
}
|
||||
|
||||
private void calculateValue(boolean adjust) {
|
||||
long zoneOffset = 0L;
|
||||
long dstOffset = 0L;
|
||||
if (adjust) {
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime(this.date);
|
||||
zoneOffset = cal.get(15);
|
||||
dstOffset = cal.get(16);
|
||||
}
|
||||
long utcValue = this.date.getTime() + zoneOffset + dstOffset;
|
||||
double utcDays = utcValue / 8.64E7D;
|
||||
this.value = utcDays + 25569.0D;
|
||||
if (!this.time && this.value < 61.0D)
|
||||
this.value--;
|
||||
if (this.time)
|
||||
this.value -= (int)this.value;
|
||||
}
|
||||
|
||||
public CellType getType() {
|
||||
return CellType.DATE;
|
||||
}
|
||||
|
||||
public byte[] getData() {
|
||||
byte[] celldata = super.getData();
|
||||
byte[] data = new byte[celldata.length + 8];
|
||||
System.arraycopy(celldata, 0, data, 0, celldata.length);
|
||||
DoubleHelper.getIEEEBytes(this.value, data, celldata.length);
|
||||
return data;
|
||||
}
|
||||
|
||||
public String getContents() {
|
||||
return this.date.toString();
|
||||
}
|
||||
|
||||
protected void setDate(Date d) {
|
||||
this.date = d;
|
||||
calculateValue(true);
|
||||
}
|
||||
|
||||
protected void setDate(Date d, GMTDate a) {
|
||||
this.date = d;
|
||||
calculateValue(false);
|
||||
}
|
||||
|
||||
public Date getDate() {
|
||||
return this.date;
|
||||
}
|
||||
|
||||
public boolean isTime() {
|
||||
return this.time;
|
||||
}
|
||||
|
||||
public DateFormat getDateFormat() {
|
||||
return null;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user