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

📄 time.java

📁 Java有关XML编程需要用到axis 的源代码 把里面bin下的包导入相应的Java工程 进行使用
💻 JAVA
字号:
/* * Copyright 2002-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.apache.axis.types;import org.apache.axis.utils.Messages;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.TimeZone;/** * Class that represents the xsd:time XML Schema type */public class Time implements java.io.Serializable {    private Calendar _value;    /**     * a shared java.text.SimpleDateFormat instance used for parsing the basic     * component of the timestamp     */    private static SimpleDateFormat zulu =       new SimpleDateFormat("HH:mm:ss.SSS'Z'");    // We should always format dates in the GMT timezone    static {        zulu.setTimeZone(TimeZone.getTimeZone("GMT"));    }    /**     * Initialize with a Calender, year month and date are ignored     */    public Time(Calendar value) {        this._value = value;        _value.set(0,0,0);      // ignore year, month, date    }    /**     * Converts a string formatted as HH:mm:ss[.SSS][+/-offset]     */    public Time(String value) throws NumberFormatException {        _value = makeValue(value);    }    /**     * return the time as a calendar: ignore the year, month and date fields     * @return calendar value; may be null     */    public Calendar getAsCalendar() {        return _value;    }    /**     * set the time; ignore year, month, date     * @param date     */    public void setTime(Calendar date) {        this._value = date;        _value.set(0,0,0);      // ignore year, month, date    }    /**     * set the time from a date instance     * @param date     */    public void setTime(Date date) {        _value.setTime(date);        _value.set(0,0,0);      // ignore year, month, date    }    /**     * Utility function that parses xsd:time strings and returns a Date object     */    private Calendar makeValue(String source) throws NumberFormatException {        Calendar calendar = Calendar.getInstance();        Date date;        validateSource(source);        // convert what we have validated so far        date = ParseHoursMinutesSeconds(source);        int pos = 8;    // The "." in hh:mm:ss.sss        // parse optional milliseconds        if ( source != null ) {            if (pos < source.length() && source.charAt(pos)=='.') {                int milliseconds = 0;                int start = ++pos;                while (pos<source.length() &&                       Character.isDigit(source.charAt(pos))) {                    pos++;                }                String decimal=source.substring(start,pos);                if (decimal.length()==3) {                    milliseconds=Integer.parseInt(decimal);                } else if (decimal.length() < 3) {                    milliseconds=Integer.parseInt((decimal+"000")                                                  .substring(0,3));                } else {                    milliseconds=Integer.parseInt(decimal.substring(0,3));                    if (decimal.charAt(3)>='5') {                        ++milliseconds;                    }                }                // add milliseconds to the current date                date.setTime(date.getTime()+milliseconds);            }            // parse optional timezone            if (pos+5 < source.length() &&                (source.charAt(pos)=='+' || (source.charAt(pos)=='-'))) {                    if (!Character.isDigit(source.charAt(pos+1)) ||                        !Character.isDigit(source.charAt(pos+2)) ||                        source.charAt(pos+3) != ':'              ||                        !Character.isDigit(source.charAt(pos+4)) ||                        !Character.isDigit(source.charAt(pos+5)))                    {                        throw new NumberFormatException(                                Messages.getMessage("badTimezone00"));                    }                    int hours = (source.charAt(pos+1)-'0')*10                        +source.charAt(pos+2)-'0';                    int mins  = (source.charAt(pos+4)-'0')*10                        +source.charAt(pos+5)-'0';                    int milliseconds = (hours*60+mins)*60*1000;                    // subtract milliseconds from current date to obtain GMT                    if (source.charAt(pos)=='+') {                        milliseconds=-milliseconds;                    }                    date.setTime(date.getTime()+milliseconds);                    pos+=6;            }            if (pos < source.length() && source.charAt(pos)=='Z') {                pos++;                calendar.setTimeZone(TimeZone.getTimeZone("GMT"));            }            if (pos < source.length()) {                throw new NumberFormatException(                        Messages.getMessage("badChars00"));            }        }        calendar.setTime(date);        calendar.set(0,0,0);    // ignore year, month, date        return calendar;    }    private int getTimezoneNumberValue(char c) {        int n=c-'0';        if(n<0 || n>9) {            //oops, out of range            throw new NumberFormatException(                    Messages.getMessage("badTimezone00"));        }        return n;    }    /**     * parse the hours, minutes and seconds of a string, by handing it off to     * the java runtime.     * The relevant code will return null if a null string is passed in, so this     * code may return a null date in response     * @param source     * @return     * @throws NumberFormatException in the event of trouble     */    private static Date ParseHoursMinutesSeconds(String source) {        Date date;        try {            synchronized (zulu) {                String fulltime = source == null ? null :                                                    (source.substring(0,8)+".000Z");                date = zulu.parse(fulltime);            }        } catch (Exception e) {            throw new NumberFormatException(e.toString());        }        return date;    }    /**     * validate the source     * @param source     */    private void validateSource(String source) {        // validate fixed portion of format        if ( source != null ) {            if (source.charAt(2) != ':' || source.charAt(5) != ':') {                throw new NumberFormatException(                        Messages.getMessage("badTime00"));            }            if (source.length() < 8) {                throw new NumberFormatException(                        Messages.getMessage("badTime00"));            }        }    }    /**     * stringify method returns the time as it would be in GMT, only accurate to the     * second...millis probably get lost.     * @return     */    public String toString() {        if(_value==null) {            return "unassigned Time";        }        synchronized (zulu) {            return zulu.format(_value.getTime());        }    }    public boolean equals(Object obj) {        if (obj == null) return false;        if (!(obj instanceof Time)) return false;        Time other = (Time) obj;        if (this == obj) return true;        boolean _equals;        _equals = true &&            ((_value ==null && other._value ==null) ||             (_value !=null &&              _value.getTime().equals(other._value.getTime())));        return _equals;    }    /**     * Returns the hashcode of the underlying calendar.     *     * @return an <code>int</code> value     */    public int hashCode() {        return _value == null ? 0 : _value.hashCode();    }}

⌨️ 快捷键说明

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