⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iso8601dateparser.java

📁 这个weblogging 设计得比较精巧
💻 JAVA
字号:
/* * Copyright 1999,2004 The Apache Software Foundation. *  * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *  *      http://www.apache.org/licenses/LICENSE-2.0 *  * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.roller.util;import java.text.SimpleDateFormat;import java.util.Date;import java.util.TimeZone;/** * ISO 8601 date parsing utility.  Designed for parsing the ISO subset used in * Dublin Core, RSS 1.0, and Atom. *  * @author <a href="mailto:burton@apache.org">Kevin A. Burton (burtonator)</a> * @version $Id: ISO8601DateParser.java,v 1.2 2005/06/03 20:25:29 snoopdave Exp $ */public class ISO8601DateParser {    // 2004-06-14T19:GMT20:30Z    // 2004-06-20T06:GMT22:01Z    private static SimpleDateFormat df        = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ssz" );    // http://www.cl.cam.ac.uk/~mgk25/iso-time.html    //        // http://www.intertwingly.net/wiki/pie/DateTime    //    // http://www.w3.org/TR/NOTE-datetime    //    // Different standards may need different levels of granularity in the date and    // time, so this profile defines six levels. Standards that reference this    // profile should specify one or more of these granularities. If a given    // standard allows more than one granularity, it should specify the meaning of    // the dates and times with reduced precision, for example, the result of    // comparing two dates with different precisions.    // The formats are as follows. Exactly the components shown here must be    // present, with exactly this punctuation. Note that the "T" appears literally    // in the string, to indicate the beginning of the time element, as specified in    // ISO 8601.    //    Year:    //       YYYY (eg 1997)    //    Year and month:    //       YYYY-MM (eg 1997-07)    //    Complete date:    //       YYYY-MM-DD (eg 1997-07-16)    //    Complete date plus hours and minutes:    //       YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)    //    Complete date plus hours, minutes and seconds:    //       YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)    //    Complete date plus hours, minutes, seconds and a decimal fraction of a    // second    //       YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00)    // where:    //      YYYY = four-digit year    //      MM   = two-digit month (01=January, etc.)    //      DD   = two-digit day of month (01 through 31)    //      hh   = two digits of hour (00 through 23) (am/pm NOT allowed)    //      mm   = two digits of minute (00 through 59)    //      ss   = two digits of second (00 through 59)    //      s    = one or more digits representing a decimal fraction of a second    //      TZD  = time zone designator (Z or +hh:mm or -hh:mm)    public static Date parse( String input ) throws java.text.ParseException {        //NOTE: SimpleDateFormat uses GMT[-+]hh:mm for the TZ which breaks        //things a bit.  Before we go on we have to repair this.        //this is zero time so we need to add that TZ indicator for         if ( input.endsWith( "Z" ) ) {            input = input.substring( 0, input.length() - 1) + "GMT-00:00";        } else {            int inset = 6;                    String s0 = input.substring( 0, input.length() - inset );            String s1 = input.substring( input.length() - inset, input.length() );            input = s0 + "GMT" + s1;        }                return df.parse( input );            }    public static String toString( Date date ) {        TimeZone tz = TimeZone.getTimeZone( "UTC" );                df.setTimeZone( tz );        String output = df.format( date );        int inset0 = 9;        int inset1 = 6;                String s0 = output.substring( 0, output.length() - inset0 );        String s1 = output.substring( output.length() - inset1, output.length() );        String result = s0 + s1;        result = result.replaceAll( "UTC", "+00:00" );                return result;            }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -