aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/xmpp/time/TimePacket.java
blob: d8756d41e4cf001eef7db7ca8e2081861b486df8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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;

/**
 * Representation of an software version packet as defined in XEP-0202.
 * @see <a href="http://xmpp.org/extensions/xep-0202.html">http://xmpp.org/extensions/xep-0202.html</a>
 */
public class TimePacket extends IqPacket {
    public static final String NAMESPACE = "urn:xmpp:time";

    TimePacket() {
        super(IqPacket.TYPE.RESULT);
        Element time = this.addChild("time", 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);
    }
}