private static Date monthend( final Date date, final LocalizationContext context ) { final Calendar gc = DateUtil.createCalendar( date, context ); gc.set( Calendar.DAY_OF_MONTH, gc.getActualMaximum( Calendar.DAY_OF_MONTH ) ); return gc.getTime(); }
/** * Converts a <code>Date</code> value according to the requested <code>Type</code> to the proper <code>Date</code> * subclasses (<code>java.sql.Time</code>, <code>java.sql.Date</code>) if needed. If the requested type is unknown, no * conversion takes place and the input date is returned. * * @param fromDate The date to convert. * @param toType The requested type of date. * @return The converted date. */ public static Date normalizeDate( final Date fromDate, final Type toType ) { return normalizeDate( fromDate, toType, true ); }
public TypeValuePair evaluate( final FormulaContext context, final ParameterCallback parameters ) throws EvaluationException { final Date now = DateUtil.now( context ); final Date date = DateUtil.normalizeDate( now, DateTimeType.DATE_TYPE ); return new TypeValuePair( DateTimeType.DATE_TYPE, date ); } }
public TypeValuePair evaluate( final FormulaContext context, final ParameterCallback parameters ) throws EvaluationException { if ( parameters.getParameterCount() != 3 ) { throw EvaluationException.getInstance( LibFormulaErrorValue.ERROR_ARGUMENTS_VALUE ); } final TypeRegistry typeRegistry = context.getTypeRegistry(); final Number n1 = typeRegistry.convertToNumber( parameters.getType( 0 ), parameters.getValue( 0 ) ); final Number n2 = typeRegistry.convertToNumber( parameters.getType( 1 ), parameters.getValue( 1 ) ); final Number n3 = typeRegistry.convertToNumber( parameters.getType( 2 ), parameters.getValue( 2 ) ); if ( n1 == null || n2 == null || n3 == null ) { throw EvaluationException.getInstance( LibFormulaErrorValue.ERROR_INVALID_ARGUMENT_VALUE ); } final LocalizationContext localizationContext = context .getLocalizationContext(); final java.sql.Date date = DateUtil.createDate( n1.intValue(), n2.intValue(), n3.intValue(), localizationContext ); return new TypeValuePair( DateTimeType.DATE_TYPE, date ); } }
public TypeValuePair evaluate( final FormulaContext context, final ParameterCallback parameters ) throws EvaluationException { if ( parameters.getParameterCount() != 3 ) { throw EvaluationException.getInstance( LibFormulaErrorValue.ERROR_ARGUMENTS_VALUE ); } final Number n1; final Number n2; final Number n3; try { final TypeRegistry typeRegistry = context.getTypeRegistry(); n1 = typeRegistry.convertToNumber( parameters.getType( 0 ), parameters.getValue( 0 ) ); n2 = typeRegistry.convertToNumber( parameters.getType( 1 ), parameters.getValue( 1 ) ); n3 = typeRegistry.convertToNumber( parameters.getType( 2 ), parameters.getValue( 2 ) ); } catch ( NumberFormatException e ) { throw EvaluationException.getInstance( LibFormulaErrorValue.ERROR_INVALID_ARGUMENT_VALUE ); } if ( n1 == null || n2 == null || n3 == null ) { throw EvaluationException.getInstance( LibFormulaErrorValue.ERROR_INVALID_ARGUMENT_VALUE ); } final int hours = n1.intValue(); final int minutes = n2.intValue(); final int seconds = n3.intValue(); final LocalizationContext localizationContext = context.getLocalizationContext(); final Time time = DateUtil.createTime( hours, minutes, seconds, localizationContext ); return new TypeValuePair( DateTimeType.TIME_TYPE, time ); } }
public TypeValuePair evaluate(final FormulaContext context, final ParameterCallback parameters) throws EvaluationException { if (parameters.getParameterCount() != 3) { throw EvaluationException.getInstance(LibFormulaErrorValue.ERROR_ARGUMENTS_VALUE); } final TypeRegistry typeRegistry = context.getTypeRegistry(); final Number n1 = typeRegistry.convertToNumber(parameters.getType(0), parameters.getValue(0)); final Number n2 = typeRegistry.convertToNumber(parameters.getType(1), parameters.getValue(1)); final Number n3 = typeRegistry.convertToNumber(parameters.getType(2), parameters.getValue(2)); if (n1 == null || n2 == null || n3 == null) { throw EvaluationException.getInstance( LibFormulaErrorValue.ERROR_INVALID_ARGUMENT_VALUE); } final LocalizationContext localizationContext = context .getLocalizationContext(); final java.sql.Date date = DateUtil.createDate(n1.intValue(), n2.intValue(), n3.intValue(), localizationContext); return new TypeValuePair(DateTimeType.DATE_TYPE, date); } }
final Time time = DateUtil.createTime(hours, minutes, seconds, localizationContext); return new TypeValuePair(DateTimeType.TIME_TYPE, time);
/** * Converts a <code>Date</code> value according to the requested <code>Type</code> to the proper <code>Date</code> * subclasses (<code>java.sql.Time</code>, <code>java.sql.Date</code>) if needed. If the requested type is unknown, no * conversion takes place and the input date is returned. * * @param fromDate The date to convert. * @param toType The requested type of date. * @return The converted date. */ public static Date normalizeDate(final Date fromDate, final Type toType) { return normalizeDate(fromDate, toType, true); }
public TypeValuePair evaluate( final FormulaContext context, final ParameterCallback parameters ) throws EvaluationException { final Date now = DateUtil.now( context ); final Date date = DateUtil.normalizeDate( now, DateTimeType.DATETIME_TYPE ); return new TypeValuePair( DateTimeType.DATETIME_TYPE, date ); } }
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 ) ); }
private static Date monthend(final Date date, final LocalizationContext context) { final Calendar gc = DateUtil.createCalendar(date, context); gc.set(Calendar.DAY_OF_MONTH, gc.getActualMaximum(Calendar.DAY_OF_MONTH)); return gc.getTime(); }
public TypeValuePair evaluate( final FormulaContext context, final ParameterCallback parameters ) throws EvaluationException { final Date yesterday = yesterday( context ); final Date date = DateUtil.normalizeDate( yesterday, DateTimeType.DATE_TYPE ); return new TypeValuePair( DateTimeType.DATE_TYPE, date ); }
public TypeValuePair evaluate(final FormulaContext context, final ParameterCallback parameters) throws EvaluationException { final Date now = DateUtil.now(context); final Date date = DateUtil.normalizeDate(now, DateTimeType.DATETIME_TYPE); return new TypeValuePair(DateTimeType.DATETIME_TYPE, date); } }
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 ) ); }
public TypeValuePair evaluate( final FormulaContext context, final ParameterCallback parameters ) throws EvaluationException { if ( parameters.getParameterCount() != 1 ) { throw EvaluationException.getInstance( LibFormulaErrorValue.ERROR_ARGUMENTS_VALUE ); } final TypeRegistry typeRegistry = context.getTypeRegistry(); final Date d = typeRegistry.convertToDate( parameters.getType( 0 ), parameters.getValue( 0 ) ); if ( d == null ) { throw EvaluationException.getInstance( LibFormulaErrorValue.ERROR_INVALID_ARGUMENT_VALUE ); } final Calendar gc = DateUtil.createCalendar( d, context.getLocalizationContext() ); final int dayOfMonth = gc.get( Calendar.DAY_OF_MONTH ); //noinspection UnpredictableBigDecimalConstructorCall return new TypeValuePair( NumberType.GENERIC_NUMBER, new BigDecimal( (double) dayOfMonth ) ); } }
public TypeValuePair evaluate(final FormulaContext context, final ParameterCallback parameters) throws EvaluationException { final Date yesterday = yesterday(context); final Date date = DateUtil.normalizeDate(yesterday, DateTimeType.DATE_TYPE); return new TypeValuePair(DateTimeType.DATE_TYPE, date); }
public TypeValuePair evaluate(final FormulaContext context, final ParameterCallback parameters) throws EvaluationException { final Date now = DateUtil.now(context); final Date date = DateUtil.normalizeDate(now, DateTimeType.DATE_TYPE); return new TypeValuePair(DateTimeType.DATE_TYPE, date); } }
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 TypeValuePair evaluate(final FormulaContext context, final ParameterCallback parameters) throws EvaluationException { if (parameters.getParameterCount() != 1) { throw EvaluationException.getInstance(LibFormulaErrorValue.ERROR_ARGUMENTS_VALUE); } final TypeRegistry typeRegistry = context.getTypeRegistry(); final Date d = typeRegistry.convertToDate(parameters.getType(0), parameters.getValue(0)); if (d == null) { throw EvaluationException.getInstance( LibFormulaErrorValue.ERROR_INVALID_ARGUMENT_VALUE); } final Calendar gc = DateUtil.createCalendar(d, context.getLocalizationContext()); final int month = gc.get(Calendar.MONTH) + 1; return new TypeValuePair(NumberType.GENERIC_NUMBER, new BigDecimal(month)); } }
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; }