package net.unit8.waitt.feature.tracer.util; import java.util.Calendar; import java.util.Date; /** * @author kawasima */ public class ISO8601Formatter { public static String format(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); StringBuilder sb = new StringBuilder(); return sb.append(lpad(cal.get(Calendar.YEAR), 4)) .append('-') .append(lpad(cal.get(Calendar.MONTH) + 1, 2)) .append('-') .append(lpad(cal.get(Calendar.DAY_OF_MONTH), 2)) .append('T') .append(lpad(cal.get(Calendar.HOUR_OF_DAY), 2)) .append(':') .append(lpad(cal.get(Calendar.MINUTE), 2)) .append(':') .append(lpad(cal.get(Calendar.SECOND), 2)) .append('.') .append(lpad(cal.get(Calendar.MILLISECOND), 3)) .toString(); } private static String lpad(int dateElement, int length) { String elStr = Integer.toString(dateElement); int elStrLen = elStr.length(); if (elStrLen >= length) { return elStr.substring(elStrLen - elStr.length()); } else { StringBuilder sb = new StringBuilder(length); for (int i=0; i < length - elStrLen; i++) sb.append(' '); sb.append(elStr); return sb.toString(); } } }