public static BigDecimal getExcelDate(final Date date) { final String dateSystem = LibFormulaBoot.getInstance().getGlobalConfig().getConfigProperty ("org.pentaho.reporting.libraries.formula.ZeroDate", "1900"); final boolean excelBugCompatible = "true".equals(LibFormulaBoot.getInstance().getGlobalConfig().getConfigProperty ("org.pentaho.reporting.libraries.formula.ExcelDateBugAware", "false")); return getExcelDate(date, excelBugCompatible, computeZeroDate(dateSystem, excelBugCompatible)); }
final int daysStart = daysInPriorYears( year - 1 ) - DAYS_TO_1900; final int daysSinceYear = daysInYear + daysStart; return fraction.add( new BigDecimal( daysSinceYear + zeroDate ) );
/** * Given a excel date, converts it into a Date. Assumes 1900 date windowing. * * @param date the Excel Date * @return Java representation of a date (null if error) */ public static Date getJavaDate( final BigDecimal date ) { final String dateSystem = LibFormulaBoot.getInstance().getGlobalConfig().getConfigProperty ( "org.pentaho.reporting.libraries.formula.ZeroDate", "1900" ); final boolean excelBugCompatible = "true".equals( LibFormulaBoot.getInstance().getGlobalConfig().getConfigProperty ( "org.pentaho.reporting.libraries.formula.ExcelDateBugAware", "false" ) ); return getJavaDate( date, excelBugCompatible, computeZeroDate( dateSystem, excelBugCompatible ) ); }
public static Date normalizeDate( Date fromDate, final Type toType, final boolean convertSerial ) { if ( fromDate == null ) { throw new IllegalArgumentException(); } if ( toType == null ) { throw new IllegalArgumentException(); } if ( convertSerial ) { BigDecimal serial = HSSFDateUtil.getExcelDate( fromDate ); serial = normalizeDate( serial, toType ); fromDate = HSSFDateUtil.getJavaDate( serial ); } // final GregorianCalendar gc = new GregorianCalendar(); // gc.setTime(fromDate); // gc.set(GregorianCalendar.MILLISECOND, 0); // fromDate = gc.getTime(); if ( toType.isFlagSet( Type.TIME_TYPE ) ) { return new Time( fromDate.getTime() ); } else if ( toType.isFlagSet( Type.DATE_TYPE ) ) { return new java.sql.Date( fromDate.getTime() ); } else if ( toType.isFlagSet( Type.DATETIME_TYPE ) ) { return new Date( fromDate.getTime() ); } return fromDate; }
|| isAnyType ) { if ( value instanceof Date ) { final BigDecimal serial = HSSFDateUtil.getExcelDate( (Date) value ); return DateUtil.normalizeDate( serial, sourceType ); final Date date = parse( df, val ); if ( date != null ) { return HSSFDateUtil.getExcelDate( date ); final Date date = parse( df, val ); if ( date != null ) { return HSSFDateUtil.getExcelDate( date ); final Date date = parse( df, val ); if ( date != null ) { return HSSFDateUtil.getExcelDate( date );
public Date convertToDate( final Type type1, final Object value ) throws EvaluationException { if ( type1.isFlagSet( Type.NUMERIC_TYPE ) || type1.isFlagSet( Type.ANY_TYPE ) ) { if ( type1.isFlagSet( Type.DATE_TYPE ) || type1.isFlagSet( Type.DATETIME_TYPE ) || type1.isFlagSet( Type.TIME_TYPE ) || type1.isFlagSet( Type.ANY_TYPE ) ) { if ( value instanceof Date ) { return DateUtil.normalizeDate( (Date) value, type1 ); } } } final Number serial = convertToNumber( type1, value ); final BigDecimal bd = NumberUtil.getAsBigDecimal( serial ); return HSSFDateUtil.getJavaDate( bd ); }
BigDecimal serial = HSSFDateUtil.getExcelDate(fromDate); serial = normalizeDate(serial, toType); fromDate = HSSFDateUtil.getJavaDate(serial);
final BigDecimal serial = HSSFDateUtil.getExcelDate((Date) value); return DateUtil.normalizeDate(serial, sourceType); if (date != null) return HSSFDateUtil.getExcelDate(date); if (date != null) return HSSFDateUtil.getExcelDate(date); if (date != null) return HSSFDateUtil.getExcelDate(date);
public Date convertToDate(final Type type1, final Object value) throws EvaluationException { if (type1.isFlagSet(Type.NUMERIC_TYPE) || type1.isFlagSet(Type.ANY_TYPE)) { if (type1.isFlagSet(Type.DATE_TYPE) || type1.isFlagSet(Type.DATETIME_TYPE) || type1.isFlagSet(Type.TIME_TYPE) || type1.isFlagSet(Type.ANY_TYPE)) { if (value instanceof Date) { return DateUtil.normalizeDate((Date) value, type1); } } } final Number serial = convertToNumber(type1, value); final BigDecimal bd = NumberUtil.getAsBigDecimal(serial); return HSSFDateUtil.getJavaDate(bd); }
public static BigDecimal getExcelDate( final Date date ) { final String dateSystem = LibFormulaBoot.getInstance().getGlobalConfig().getConfigProperty ( "org.pentaho.reporting.libraries.formula.ZeroDate", "1900" ); final boolean excelBugCompatible = "true".equals( LibFormulaBoot.getInstance().getGlobalConfig().getConfigProperty ( "org.pentaho.reporting.libraries.formula.ExcelDateBugAware", "false" ) ); return getExcelDate( date, excelBugCompatible, computeZeroDate( dateSystem, excelBugCompatible ) ); }
/** * Given a excel date, converts it into a Date. Assumes 1900 date windowing. * * @param date the Excel Date * @return Java representation of a date (null if error) */ public static Date getJavaDate(final BigDecimal date) { final String dateSystem = LibFormulaBoot.getInstance().getGlobalConfig().getConfigProperty ("org.pentaho.reporting.libraries.formula.ZeroDate", "1900"); final boolean excelBugCompatible = "true".equals(LibFormulaBoot.getInstance().getGlobalConfig().getConfigProperty ("org.pentaho.reporting.libraries.formula.ExcelDateBugAware", "false")); return getJavaDate(date, excelBugCompatible, computeZeroDate(dateSystem, excelBugCompatible)); }
final BigDecimal fromAsBigDecimal = NumberUtil.getAsBigDecimal( serial ); final BigDecimal normalizedSerial = DateUtil.normalizeDate( fromAsBigDecimal, targetType ); final Date toJavaDate = HSSFDateUtil.getJavaDate( normalizedSerial ); return DateUtil.normalizeDate( toJavaDate, targetType, false );
final int daysStart = daysInPriorYears(year - 1) - DAYS_TO_1900; final int daysSinceYear = daysInYear + daysStart; return fraction.add(new BigDecimal(daysSinceYear + zeroDate));
public void testDateConversion1904() { final FormulaContext context = getContext(); final Date januaryFirst1904 = DateUtil.createDate( 1904, 1, 1, context.getLocalizationContext() ); final Date januaryFirst1900 = DateUtil.createDate( 1900, 1, 1, context.getLocalizationContext() ); final Date marchFirst1904 = DateUtil.createDate( 1904, 3, 1, context.getLocalizationContext() ); final Date marchFirst1900 = DateUtil.createDate( 1900, 3, 1, context.getLocalizationContext() ); // these numbers must match whatever OpenOffice computes .. assertEqual( HSSFDateUtil.getExcelDate( januaryFirst1900, false, HSSFDateUtil.computeZeroDate( "1904", false ) ), new BigDecimal( -1460 ) ); assertEqual( HSSFDateUtil.getExcelDate( marchFirst1900, false, HSSFDateUtil.computeZeroDate( "1904", false ) ), new BigDecimal( -1401 ) ); assertEqual( HSSFDateUtil.getExcelDate( januaryFirst1904, false, HSSFDateUtil.computeZeroDate( "1904", false ) ), new BigDecimal( 0 ) ); assertEqual( HSSFDateUtil.getExcelDate( marchFirst1904, false, HSSFDateUtil.computeZeroDate( "1904", false ) ), new BigDecimal( 60 ) ); assertEqual( HSSFDateUtil.getExcelDate( januaryFirst1900, true, HSSFDateUtil.computeZeroDate( "1904", true ) ), new BigDecimal( -1461 ) ); assertEqual( HSSFDateUtil.getExcelDate( marchFirst1900, true, HSSFDateUtil.computeZeroDate( "1904", true ) ), new BigDecimal( -1401 ) ); assertEqual( HSSFDateUtil.getExcelDate( januaryFirst1904, true, HSSFDateUtil.computeZeroDate( "1904", true ) ), new BigDecimal( 0 ) ); assertEqual( HSSFDateUtil.getExcelDate( marchFirst1904, true, HSSFDateUtil.computeZeroDate( "1904", true ) ), new BigDecimal( 60 ) ); }
final Date toJavaDate = HSSFDateUtil.getJavaDate(normalizedSerial); return DateUtil.normalizeDate(toJavaDate, targetType, false);
public void testDateConversion1899() { final FormulaContext context = getContext(); final Date januaryFirst1904 = DateUtil.createDate( 1904, 1, 1, context.getLocalizationContext() ); final Date januaryFirst1900 = DateUtil.createDate( 1900, 1, 1, context.getLocalizationContext() ); final Date marchFirst1904 = DateUtil.createDate( 1904, 3, 1, context.getLocalizationContext() ); final Date marchFirst1900 = DateUtil.createDate( 1900, 3, 1, context.getLocalizationContext() ); // these numbers must match whatever OpenOffice computes .. assertEqual( HSSFDateUtil.getExcelDate( januaryFirst1900, false, HSSFDateUtil.computeZeroDate( "1899", false ) ), new BigDecimal( 2 ) ); assertEqual( HSSFDateUtil.getExcelDate( marchFirst1900, false, HSSFDateUtil.computeZeroDate( "1899", false ) ), new BigDecimal( 61 ) ); assertEqual( HSSFDateUtil.getExcelDate( januaryFirst1904, false, HSSFDateUtil.computeZeroDate( "1899", false ) ), new BigDecimal( 1462 ) ); assertEqual( HSSFDateUtil.getExcelDate( marchFirst1904, false, HSSFDateUtil.computeZeroDate( "1899", false ) ), new BigDecimal( 1522 ) ); assertEqual( HSSFDateUtil.getExcelDate( januaryFirst1900, true, HSSFDateUtil.computeZeroDate( "1899", true ) ), new BigDecimal( 2 ) ); assertEqual( HSSFDateUtil.getExcelDate( marchFirst1900, true, HSSFDateUtil.computeZeroDate( "1899", true ) ), new BigDecimal( 62 ) ); assertEqual( HSSFDateUtil.getExcelDate( januaryFirst1904, true, HSSFDateUtil.computeZeroDate( "1899", true ) ), new BigDecimal( 1463 ) ); assertEqual( HSSFDateUtil.getExcelDate( marchFirst1904, true, HSSFDateUtil.computeZeroDate( "1899", true ) ), new BigDecimal( 1523 ) ); }
public void testDateConversion1900() { final FormulaContext context = getContext(); final Date januaryFirst1904 = DateUtil.createDate( 1904, 1, 1, context.getLocalizationContext() ); final Date januaryFirst1900 = DateUtil.createDate( 1900, 1, 1, context.getLocalizationContext() ); final Date marchFirst1904 = DateUtil.createDate( 1904, 3, 1, context.getLocalizationContext() ); final Date marchFirst1900 = DateUtil.createDate( 1900, 3, 1, context.getLocalizationContext() ); // these numbers must match whatever OpenOffice computes .. assertEqual( HSSFDateUtil.getExcelDate( januaryFirst1900, false, HSSFDateUtil.computeZeroDate( "1900", false ) ), new BigDecimal( 0 ) ); assertEqual( HSSFDateUtil.getExcelDate( marchFirst1900, false, HSSFDateUtil.computeZeroDate( "1900", false ) ), new BigDecimal( 59 ) ); assertEqual( HSSFDateUtil.getExcelDate( januaryFirst1904, false, HSSFDateUtil.computeZeroDate( "1900", false ) ), new BigDecimal( 1460 ) ); assertEqual( HSSFDateUtil.getExcelDate( marchFirst1904, false, HSSFDateUtil.computeZeroDate( "1900", false ) ), new BigDecimal( 1520 ) ); assertEqual( HSSFDateUtil.getExcelDate( januaryFirst1900, true, HSSFDateUtil.computeZeroDate( "1900", true ) ), new BigDecimal( 0 ) ); assertEqual( HSSFDateUtil.getExcelDate( marchFirst1900, true, HSSFDateUtil.computeZeroDate( "1900", true ) ), new BigDecimal( 60 ) ); assertEqual( HSSFDateUtil.getExcelDate( januaryFirst1904, true, HSSFDateUtil.computeZeroDate( "1900", true ) ), new BigDecimal( 1461 ) ); assertEqual( HSSFDateUtil.getExcelDate( marchFirst1904, true, HSSFDateUtil.computeZeroDate( "1900", true ) ), new BigDecimal( 1521 ) ); }