package de.thedevstack.conversationsplus.xmpp.time; import java.util.Locale; import java.util.TimeZone; import de.thedevstack.conversationsplus.generator.AbstractGenerator; import de.thedevstack.conversationsplus.xml.Element; import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacket; import de.thedevstack.conversationsplus.xmpp.stanzas.IqPacketGenerator; /** * Generates the IQ Packets for Entity Time * as defined in XEP-0202. * @see http://xmpp.org/extensions/xep-0202.html */ public final class TimePacketGenerator { /** * Generates the IqPacket to reply the entity time. *
     * 
     *   
     * 
     * 
* @param packet * @return */ public static IqPacket generateResponse(IqPacket packet) { IqPacket responsePacket = IqPacketGenerator.generateIqResultResponse(packet); Element time = responsePacket.addChild(EntityTime.ELEMENT, EntityTime.NAMESPACE); final long now = System.currentTimeMillis(); time.addChild("utc").setContent(AbstractGenerator.getTimestamp(now)); TimeZone ourTimezone = TimeZone.getDefault(); long offsetSeconds = ourTimezone.getOffset(now) / 1000; long offsetMinutes = Math.abs((offsetSeconds % 3600) / 60); long offsetHours = offsetSeconds / 3600; String hours; if (offsetHours < 0) { hours = String.format(Locale.US, "%03d", offsetHours); } else { hours = String.format(Locale.US, "%02d", offsetHours); } String minutes = String.format(Locale.US, "%02d", offsetMinutes); time.addChild("tzo").setContent(hours + ":" + minutes); return responsePacket; } private TimePacketGenerator() {} }