private static DvDateTime create(DvDateTime dvDateTime, String attributeName, Object value) throws InternalErrorException {
Calendar cal = Calendar.getInstance();
if (value instanceof Integer) {
setCalendar(cal, Calendar.YEAR, attributeName, (Integer) value, "year", dvDateTime.getYear());
setCalendar(cal, Calendar.MONTH, attributeName,
((Integer) value - 1), "month", dvDateTime.getMonth() - 1);
setCalendar(cal, Calendar.DATE, attributeName, (Integer) value, "day", dvDateTime.getDay());
setCalendar(cal, Calendar.HOUR_OF_DAY, attributeName, (Integer) value, "hour", dvDateTime.getHour());
setCalendar(cal, Calendar.MINUTE, attributeName, (Integer) value, "minute", dvDateTime.getMinute());
setCalendar(cal, Calendar.SECOND, attributeName, (Integer) value, "second", dvDateTime.getSecond());
} else {
if ("value".equals(attributeName) && value instanceof Long) {
cal.setTimeInMillis(((Long) value));
} else if ("value".equals(attributeName) && value instanceof Double) {
cal.setTimeInMillis(((Double) value).longValue());
} else {
logger.warn("Wrong attribute name or class creating DvDateTime with value = '" + value + "'");
}
}
return toDvDateTime(cal);
}