public double evalAsDouble(Focus focus, EvalContext context) throws EvaluationException { context.at(this); XQItem v = args[0].evalAsOptItem(focus, context); if (v == null) throw EmptyException.instance(); if (v instanceof MomentValue) { MomentValue mv = (MomentValue) v; return mv.getValue().getSecond(); } try { DateTime dt = DateTime.parseDateTime(v.getString()); return dt.getSecond(); } catch (DateTimeException e) { context.error(Conversion.ERR_CAST, this, "cannot cast to xs:dateTime : " + e.getMessage()); return 0; } }