ISO8601

Utility class for converting between Java time objects and ISO 8601 date strings. All methods are static.

Two formats are supported:

  • Extended: YYYY-MM-DDThh:mm:ss.SSSTZD (e.g. 2024-03-15T14:30:00.000+01:00)
  • Basic: yyyyMMddHHmmss (e.g. 20240315143000)

Date metadata fields in OpenKM property groups are stored and exchanged in the basic format yyyyMMddHHmmss. Use parseBasic and formatBasic when reading or writing those fields.

Methods

isExtended

Description:

MethodReturn valuesDescription

isExtended(String value)

boolean

Returns true if the string matches the extended ISO 8601 pattern YYYY-MM-DDThh:mm:ss.SSSTZD.

Example:

boolean valid = ISO8601.isExtended("2024-03-15T14:30:00.000+01:00"); // true
boolean invalid = ISO8601.isExtended("20240315143000"); // false

parseExtended

Description:

MethodReturn valuesDescription

parseExtended(String value)

Calendar

Parses an extended ISO 8601 string (YYYY-MM-DDThh:mm:ss.SSSTZD) and returns a Calendar. Returns null for null input. Throws IllegalArgumentException if the string cannot be parsed.

Example:

package com.openkm;

import com.openkm.util.ISO8601;
import java.util.Calendar;

public class Test {

    public static void main(String[] args) {
        try {
            Calendar cal = ISO8601.parseExtended("2024-03-15T14:30:00.000+01:00");
            System.out.println(cal.getTime());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

formatExtended

Description:

MethodReturn valuesDescription

formatExtended(Calendar value)

String

Formats a Calendar value as an extended ISO 8601 string (YYYY-MM-DDThh:mm:ss.SSSTZD). Returns null for null input.

Example:

String iso = ISO8601.formatExtended(Calendar.getInstance());
System.out.println(iso); // "2024-03-15T14:30:00.000+01:00"

parseBasic

Description:

MethodReturn valuesDescription

parseBasic(String value)

Calendar

Parses a basic ISO 8601 string in the format yyyyMMddHHmmss and returns a Calendar. Returns null for null input. Throws IllegalArgumentException if the string cannot be parsed.

value: A date string in yyyyMMddHHmmss format.

Example:

package com.openkm;

import com.openkm.util.ISO8601;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Test {

    public static void main(String[] args) {
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Calendar cal = ISO8601.parseBasic("20240315143000");
            System.out.println(sdf.format(cal.getTime())); // "2024-03-15 14:30:00"
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

formatBasic (Calendar)

Description:

MethodReturn valuesDescription

formatBasic(Calendar value)

String

Formats a Calendar value as a basic ISO 8601 string (yyyyMMddHHmmss). Returns null for null input.

formatBasic (Date)

Description:

MethodReturn valuesDescription

formatBasic(Date value)

String

Formats a Date value as a basic ISO 8601 string (yyyyMMddHHmmss).

Example:

package com.openkm;

import com.openkm.util.ISO8601;
import java.util.Calendar;

public class Test {

    public static void main(String[] args) {
        try {
            Calendar cal = Calendar.getInstance();
            System.out.println(ISO8601.formatBasic(cal));      // "20240315143000"
            System.out.println(ISO8601.formatBasic(cal.getTime())); // "20240315143000"
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

printBasic

Description:

MethodReturn valuesDescription

printBasic(String value)

String

Parses a basic ISO 8601 string (yyyyMMddHHmmss) and reformats it as yyyy-MM-dd for display. Returns an empty string if the input is null or empty.

Example:

String display = ISO8601.printBasic("20240315143000");
System.out.println(display); // "2024-03-15"