package org.rrd4j.graph; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Locale; /** * Simple time label using a format similar to {@code strftime}. For more details on the * supported conversions see the Date/Time Conversions section for {@link java.util.Formatter}. * Examples: * * <ul> * <li>strftime pattern: {@code %Y-%m-%dT%H:%M:%S}</li> * <li>simple date format pattern: {@code yyyy'-'MM'-'dd'T'HH':'mm':'ss}</li> * </ul> */ public class SimpleTimeLabelFormat implements TimeLabelFormat { private final String format; /** * Create a new instance using a format string that is either an strftime patter or a simple * date format pattern. */ public SimpleTimeLabelFormat(String format) { // escape strftime like format string this.format = format.replaceAll("%([^%])", "%1\\$t$1"); } @Override public String format(Calendar calendar, Locale locale) { if (format.contains("%")) { // strftime like format string return String.format(locale, format, calendar); } else { SimpleDateFormat sdf = new SimpleDateFormat(format); sdf.setCalendar(calendar); return sdf.format(calendar.getTime()); } } }