All Downloads are FREE. Search and download functionalities are using the official Maven repository.

no.difi.oxalis.as2.util.As2DateUtil Maven / Gradle / Ivy

/*
 * Copyright 2010-2017 Norwegian Agency for Public Management and eGovernment (Difi)
 *
 * Licensed under the EUPL, Version 1.1 or – as soon they
 * will be approved by the European Commission - subsequent
 * versions of the EUPL (the "Licence");
 *
 * You may not use this work except in compliance with the Licence.
 *
 * You may obtain a copy of the Licence at:
 *
 * https://joinup.ec.europa.eu/community/eupl/og_page/eupl
 *
 * Unless required by applicable law or agreed to in
 * writing, software distributed under the Licence is
 * distributed on an "AS IS" basis,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied.
 * See the Licence for the specific language governing
 * permissions and limitations under the Licence.
 */

package no.difi.oxalis.as2.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * Ensures that all date time objects are parsed and formatted according to the specifications in RFC4130.
 * 

* RFC-4130 references RFC-2045, which references RFC-1123, which references good old RFC-822. *

 * date-time   =  [ day "," ] date time        ; dd mm yy
 * ;  hh:mm:ss zzz
 *
 * day         =  "Mon"  / "Tue" /  "Wed"  / "Thu"
 * /  "Fri"  / "Sat" /  "Sun"
 *
 * date        =  1*2DIGIT month 4DIGIT           ; day month year(4 digits)
 * ;  e.g. 20 Jun 82
 *
 * month       =  "Jan"  /  "Feb" /  "Mar"  /  "Apr"
 * /  "May"  /  "Jun" /  "Jul"  /  "Aug"
 * /  "Sep"  /  "Oct" /  "Nov"  /  "Dec"
 *
 * time        =  hour zone                       ; ANSI and Military
 *
 * hour        =  2DIGIT ":" 2DIGIT [":" 2DIGIT]
 * ; 00:00:00 - 23:59:59
 *
 * zone        =  "UT"  / "GMT"                   ; Universal Time
 * ; North American : UT
 * /  "EST" / "EDT"                    ;  Eastern:  - 5/ - 4
 * /  "CST" / "CDT"                    ;  Central:  - 6/ - 5
 * /  "MST" / "MDT"                    ;  Mountain: - 7/ - 6
 * /  "PST" / "PDT"                    ;  Pacific:  - 8/ - 7
 * /  1ALPHA                           ; Military: Z = UT;
 * ;  A:-1; (J not used)
 * ;  M:-12; N:+1; Y:+12
 * / ( ("+" / "-") 4DIGIT )            ; Local differential
 * ;  hours+min. (HHMM)
 * 
* * @author steinar * @author erlend * @see "RFC-4130" * @see "RFC-2045" * @see "RFC-1123" * @see "RFC-822" */ public enum As2DateUtil { RFC822("EEE, dd MMM yyyy HH:mm:ss Z"), ISO8601("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); private String format; As2DateUtil(String format) { this.format = format; } public Date parse(String s) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format, Locale.ENGLISH); try { return simpleDateFormat.parse(s); } catch (ParseException e) { throw new IllegalStateException(e.getMessage(), e); } } public String format(Date d) { return new SimpleDateFormat(format, Locale.ENGLISH).format(d); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy