<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.0" />

Time

public class Time : Asn1Encodable, IAsn1Choice
using System; using System.Globalization; namespace Org.BouncyCastle.Asn1.X509 { public class Time : Asn1Encodable, IAsn1Choice { private readonly Asn1Object m_timeObject; public static Time GetInstance(object obj) { return Asn1Utilities.GetInstanceChoice(obj, GetOptional); } public static Time GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return Asn1Utilities.GetInstanceChoice(taggedObject, declaredExplicit, GetInstance); } public static Time GetOptional(Asn1Encodable element) { if (element == null) throw new ArgumentNullException("element"); Time time = element as Time; if (time != null) return time; Asn1UtcTime optional = Asn1UtcTime.GetOptional(element); if (optional != null) return new Time(optional); Asn1GeneralizedTime optional2 = Asn1GeneralizedTime.GetOptional(element); if (optional2 != null) return new Time(optional2); return null; } public static Time GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return Asn1Utilities.GetTaggedChoice(taggedObject, declaredExplicit, GetInstance); } public Time(Asn1GeneralizedTime generalizedTime) { if (generalizedTime == null) throw new ArgumentNullException("generalizedTime"); m_timeObject = generalizedTime; } public Time(Asn1UtcTime utcTime) { if (utcTime == null) throw new ArgumentNullException("utcTime"); utcTime.ToDateTime(2049); m_timeObject = utcTime; } public Time(DateTime date) { DateTime dateTime = date.ToUniversalTime(); if (dateTime.Year < 1950 || dateTime.Year > 2049) m_timeObject = Rfc5280Asn1Utilities.CreateGeneralizedTime(dateTime); else m_timeObject = Rfc5280Asn1Utilities.CreateUtcTime(dateTime); } public DateTime ToDateTime() { try { return (m_timeObject as Asn1UtcTime)?.ToDateTime(2049) ?? ((Asn1GeneralizedTime)m_timeObject).ToDateTime(); } catch (FormatException ex) { throw new InvalidOperationException("invalid date string: " + ex.Message); } } public override Asn1Object ToAsn1Object() { return m_timeObject; } public override string ToString() { Asn1UtcTime asn1UtcTime = m_timeObject as Asn1UtcTime; DateTime dateTime; if (asn1UtcTime != null) { dateTime = asn1UtcTime.ToDateTime(2049); return dateTime.ToString("yyyyMMddHHmmssK", DateTimeFormatInfo.InvariantInfo); } Asn1GeneralizedTime asn1GeneralizedTime = m_timeObject as Asn1GeneralizedTime; if (asn1GeneralizedTime != null) { dateTime = asn1GeneralizedTime.ToDateTime(); return dateTime.ToString("yyyyMMddHHmmss.FFFFFFFK", DateTimeFormatInfo.InvariantInfo); } throw new InvalidOperationException(); } } }