diff --git a/src/main/java/caosdb/datetime/UTCTimeZoneShift.java b/src/main/java/caosdb/datetime/UTCTimeZoneShift.java index 0784c67bd9ba31786605a16cf1ff309b08562090..a5930d7d72250749d351000343e92ee4b24a02ac 100644 --- a/src/main/java/caosdb/datetime/UTCTimeZoneShift.java +++ b/src/main/java/caosdb/datetime/UTCTimeZoneShift.java @@ -111,4 +111,17 @@ public class UTCTimeZoneShift extends TimeZone { public String getID() { return str; } + + /** + * Generate an ISO 8601 time zone offset string (e.g. +0200) from the given raw offset in + * milliseconds. + * + * @param rawOffset - offset in ms. + * @return ISO 8601 time zone offset. + */ + public static String getISO8601Offset(int rawOffset) { + int h = Integer.divideUnsigned(rawOffset, 1000 * 60 * 60); + int m = Integer.remainderUnsigned(rawOffset, 1000 * 60 * 60); + return generateString(Integer.signum(h), h, m); + } } diff --git a/src/main/java/caosdb/server/resource/InfoResource.java b/src/main/java/caosdb/server/resource/InfoResource.java index 924d66980e5da27ec998fd361b95a8f0769e4229..40c071f4ae90bde9600102613a4e94ab35a119cf 100644 --- a/src/main/java/caosdb/server/resource/InfoResource.java +++ b/src/main/java/caosdb/server/resource/InfoResource.java @@ -22,10 +22,12 @@ */ package caosdb.server.resource; +import caosdb.datetime.UTCTimeZoneShift; import caosdb.server.database.backend.implementation.MySQL.ConnectionException; import caosdb.server.database.misc.TransactionBenchmark; import caosdb.server.utils.FlagInfo; import caosdb.server.utils.Info; +import java.util.TimeZone; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; @@ -43,6 +45,7 @@ public class InfoResource extends AbstractCaosDBServerResource { protected Representation httpGetInChildClass() throws Exception { final Document doc = new Document(); final Element root = generateRootElement(); + root.addContent(getTimeZone()); root.addContent(Info.toElement()); root.addContent(FlagInfo.toElement()); root.addContent(TransactionBenchmark.getRootInstance().toElememt()); @@ -50,6 +53,14 @@ public class InfoResource extends AbstractCaosDBServerResource { return ok(doc); } + public Element getTimeZone() { + TimeZone d = TimeZone.getDefault(); + return new Element("TimeZone") + .setAttribute("offset", UTCTimeZoneShift.getISO8601Offset(d.getRawOffset())) + .setAttribute("id", d.getID()) + .addContent(d.getDisplayName()); + } + /** There is no POST request specified for the /Info resource. */ @Override protected Representation httpPostInChildClass(final Representation entity)