Time.java
上传用户:lior1029
上传日期:2013-05-07
资源大小:209k
文件大小:2k
源码类别:

CA认证

开发平台:

Java

  1. package org.bouncycastle.asn1.x509;
  2. import java.util.Date;
  3. import java.util.SimpleTimeZone;
  4. import java.text.ParsePosition;
  5. import java.text.SimpleDateFormat;
  6. import org.bouncycastle.asn1.*;
  7. public class Time
  8.     implements DEREncodable
  9. {
  10.     DERObject   time;
  11.     public static Time getInstance(
  12.         ASN1TaggedObject obj,
  13.         boolean          explicit)
  14.     {
  15.         return getInstance(obj.getObject());
  16.     }
  17.     public Time(
  18.         DERObject   time)
  19.     {
  20.         if (!(time instanceof DERUTCTime)
  21.             && !(time instanceof DERGeneralizedTime))
  22.         {
  23.             throw new IllegalArgumentException("unknown object passed to Time");
  24.         }
  25.         this.time = time; 
  26.     }
  27.     /**
  28.      * creates a time object from a given date - if the date is between 1950
  29.      * and 2049 a UTCTime object is generated, otherwise a GeneralizedTime
  30.      * is used.
  31.      */
  32.     public Time(
  33.         Date    date)
  34.     {
  35.         SimpleTimeZone      tz = new SimpleTimeZone(0, "Z");
  36.         SimpleDateFormat    dateF = new SimpleDateFormat("yyyyMMddHHmmss");
  37.         dateF.setTimeZone(tz);
  38.         String  d = dateF.format(date) + "Z";
  39.         int     year = Integer.parseInt(d.substring(0, 4));
  40.         if (year < 1950 || year > 2049)
  41.         {
  42.             time = new DERGeneralizedTime(d);
  43.         }
  44.         else
  45.         {
  46.             time = new DERUTCTime(d.substring(2));
  47.         }
  48.     }
  49.     public static Time getInstance(
  50.         Object  obj)
  51.     {
  52.         if (obj instanceof Time)
  53.         {
  54.             return (Time)obj;
  55.         }
  56.         else if (obj instanceof DERUTCTime)
  57.         {
  58.             return new Time((DERUTCTime)obj);
  59.         }
  60.         else if (obj instanceof DERGeneralizedTime)
  61.         {
  62.             return new Time((DERGeneralizedTime)obj);
  63.         }
  64.         throw new IllegalArgumentException("unknown object in factory");
  65.     }
  66.     public String getTime()
  67.     {
  68.         if (time instanceof DERUTCTime)
  69.         {
  70.             return ((DERUTCTime)time).getAdjustedTime();
  71.         }
  72.         else
  73.         {
  74.             return ((DERGeneralizedTime)time).getTime();
  75.         }
  76.     }
  77.     public Date getDate()
  78.     {
  79.         SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMddHHmmssz");
  80.         return dateF.parse(this.getTime(), new ParsePosition(0));
  81.     }
  82.     /**
  83.      * <pre>
  84.      * Time ::= CHOICE {
  85.      *             utcTime        UTCTime,
  86.      *             generalTime    GeneralizedTime }
  87.      * </pre>
  88.      */
  89.     public DERObject getDERObject()
  90.     {
  91.         return time;
  92.     }
  93. }