private ProductData.UTC getUTCAttribute(String key, List<Attribute> globalAttributes) { Attribute attribute = findAttribute(key, globalAttributes); Boolean isModis = false; try { isModis = findAttribute("MODIS_Resolution", globalAttributes).isString(); } catch (Exception ignored) { } if (attribute != null) { String timeString = attribute.getStringValue().trim(); final DateFormat dateFormat = ProductData.UTC.createDateFormat("yyyyDDDHHmmssSSS"); final DateFormat dateFormatModis = ProductData.UTC.createDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); final DateFormat dateFormatOcts = ProductData.UTC.createDateFormat("yyyyMMdd HH:mm:ss.SSSSSS"); try { if (isModis) { final Date date = dateFormatModis.parse(timeString); String milliSeconds = timeString.substring(timeString.length() - 3); return ProductData.UTC.create(date, Long.parseLong(milliSeconds) * 1000); } else if (productReader.getProductType() == SeadasProductReader.ProductType.Level1A_OCTS) { final Date date = dateFormatOcts.parse(timeString); String milliSeconds = timeString.substring(timeString.length() - 3); return ProductData.UTC.create(date, Long.parseLong(milliSeconds) * 1000); } else { final Date date = dateFormat.parse(timeString); String milliSeconds = timeString.substring(timeString.length() - 3); return ProductData.UTC.create(date, Long.parseLong(milliSeconds) * 1000); } } catch (ParseException ignored) { } } return null; }