// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.core.time; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; /** * Outputs a date in a format suitable for an OSM XML file. * * @author Brett Henderson */ public class DateFormatter { private GregorianCalendar calendar; /** * Creates a new instance. */ public DateFormatter() { calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); } /** * Formats a date in XML format. * * @param date * The date to be formatted. * @return The string representing the date. */ public String format(Date date) { StringBuilder result; int year; int month; int day; int hour; int minute; int second; calendar.setTime(date); result = new StringBuilder(20); year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH) + 1; day = calendar.get(Calendar.DATE); hour = calendar.get(Calendar.HOUR_OF_DAY); minute = calendar.get(Calendar.MINUTE); second = calendar.get(Calendar.SECOND); result.append(year); result.append('-'); if (month < 10) { result.append('0'); } result.append(month); result.append('-'); if (day < 10) { result.append('0'); } result.append(day); result.append('T'); if (hour < 10) { result.append('0'); } result.append(hour); result.append(':'); if (minute < 10) { result.append('0'); } result.append(minute); result.append(':'); if (second < 10) { result.append('0'); } result.append(second); result.append('Z'); return result.toString(); } }