Home > Support > Documentation

ASN1CTime Class Reference
[Date and Time Runtime Classes]

#include <ASN1CTime.h>

Inheritance diagram for ASN1CTime:

ASN1CType ASN1CGeneralizedTime ASN1CUTCTime List of all members.

Detailed Description

ASN.1 Time control base class. The ASN1CTime class is derived from the ASN1CType base class. It is used as the abstract base class for generated control classes for the ASN.1 Generalized Time ([UNIVERSAL 24] IMPLICIT VisibleString) types and Universal Time ([UNIVERSAL 23] IMPLICIT VisibleString) types. This class provides utility methods for operating on the time information referenced by the generated class. This class can also be used inline to operate on the times within generated time string elements in a SEQUENCE, SET, or CHOICE construct. The time string are generally formatted according to ISO 8601 format with some exceptions (X.680).


Public Types

enum  {
  January = 1, Jan = 1, February = 2, Feb = 2,
  March = 3, Mar = 3, April = 4, Apr = 4,
  May = 5, June = 6, Jun = 6, July = 7,
  Jul = 7, August = 8, Aug = 8, September = 9,
  Sep = 9, October = 10, Oct = 10, November = 11,
  Nov = 11, December = 12, Dec = 12
}

Public Member Functions

 ASN1CTime (OSRTMessageBufferIF &msgBuf, char *&buf, int bufSize, OSBOOL useDerRules)
 ASN1CTime (OSRTMessageBufferIF &msgBuf, ASN1VisibleString &buf, OSBOOL useDerRules)
 ASN1CTime (ASN1Context &ctxt, char *&buf, int bufSize, OSBOOL useDerRules)
 ASN1CTime (ASN1Context &ctxt, ASN1VisibleString &buf, OSBOOL useDerRules)
 ASN1CTime (const ASN1CTime &original)
virtual int getYear ()
virtual int getMonth ()
virtual int getDay ()
virtual int getHour ()
virtual int getMinute ()
virtual int getSecond ()
virtual int getFraction ()
virtual double getFractionAsDouble ()
virtual int getFractionStr (char *const pBuf, size_t bufSize)
virtual int getFractionLen ()
virtual int getDiffHour ()
virtual int getDiffMinute ()
virtual int getDiff ()
virtual OSBOOL getUTC ()
virtual time_t getTime ()
void setDER (OSBOOL bvalue)
virtual int setUTC (OSBOOL utc)
virtual int setYear (int year_)
virtual int setMonth (int month_)
virtual int setDay (int day_)
virtual int setHour (int hour_)
virtual int setMinute (int minute_)
virtual int setSecond (int second_)
virtual int setFraction (int fraction, int fracLen=-1)
virtual int setFraction (double frac, int fracLen)
virtual int setFraction (char const *frac)
virtual int setTime (time_t time, OSBOOL diffTime)=0
virtual int setDiffHour (int dhour)
virtual int setDiff (int dhour, int dminute)
virtual int setDiff (int inMinutes)
virtual int parseString (const char *string)
virtual void clear ()
virtual int equals (ASN1CTime &)
size_t getTimeStringLen ()
const char * getTimeString (char *pbuf, size_t bufsize)
const ASN1CTimeoperator= (const ASN1CTime &)
virtual OSBOOL operator== (ASN1CTime &)
virtual OSBOOL operator!= (ASN1CTime &)
virtual OSBOOL operator> (ASN1CTime &)
virtual OSBOOL operator< (ASN1CTime &)
virtual OSBOOL operator>= (ASN1CTime &)
virtual OSBOOL operator<= (ASN1CTime &)

Protected Member Functions

void checkCapacity ()
char *& getTimeStringPtr ()
virtual ASN1TTimegetTimeObj ()=0
virtual const ASN1TTimegetTimeObj () const=0
 ASN1CTime (char *&buf, int bufSize, OSBOOL useDerRules)
 ASN1CTime (ASN1VisibleString &buf, OSBOOL useDerRules)
virtual int compileString ()=0

Protected Attributes

OSBOOL parsed
OSBOOL derRules
char *& timeStr
int strSize

Constructor & Destructor Documentation

ASN1CTime::ASN1CTime ( OSRTMessageBufferIF &  msgBuf,
char *&  buf,
int  bufSize,
OSBOOL  useDerRules 
)

This constructor creates a time string from buffer.

It does not deep-copy the data; it just assigns the passed array to an internal reference variable. The object will then directly operate on the given data variable.

Parameters:
msgBuf Reference to an OSRTMessage buffer derived object (for example, ASNBEREncodeBuffer).
buf Reference to a pointer to a time string buffer.
bufSize Size of buffer in bytes.
useDerRules Use the Distinguished Encoding Rules (DER) to operate on this time value.

ASN1CTime::ASN1CTime ( OSRTMessageBufferIF &  msgBuf,
ASN1VisibleString &  buf,
OSBOOL  useDerRules 
)

This constructor creates a time string from an ASN1VisibleString object.

It does not deep-copy the data; it just assigns the passed object to an internal reference variable. The object will then directly operate on the given data variable.

Parameters:
msgBuf Reference to an OSRTMessage buffer derived object (for example, ASNBEREncodeBuffer).
buf Reference to a visible string object to hold the time data.
useDerRules Use the Distinguished Encoding Rules (DER) to operate on this time value.

ASN1CTime::ASN1CTime ( const ASN1CTime original  ) 

The copy constructor. This does not deep-copy the original value. Instead, it assigns references to the internal components.

Parameters:
original The original time string object value.


Member Function Documentation

virtual int ASN1CTime::getYear (  )  [virtual]

This method returns the year component of the time value.

Note that the return value may differ for different inherited ASN1CTime classes.

Parameters:
- none
Returns:
Year component (full 4 digits) is returned if the operation is successful. If the operation fails, a negative value is returned.

virtual int ASN1CTime::getMonth (  )  [virtual]

This method returns the month number component of the time value.

The number of January is 1, February 2, ... up to December 12. You may also use enumerated valued for decoded months: ASN1CTime::January, ASN1CTime::February, etc. Also short aliases for months can be used: ASN1CTime::Jan, ASN1CTime::Feb, etc. Note that the return value may differ for different inherited ASN1CTime classes.

Parameters:
- none
Returns:
Month component (1 - 12) is returned if operation is successful. If the operation fails, a negative value is returned.

virtual int ASN1CTime::getDay (  )  [virtual]

This method returns the day of month number component of the time value.

The number of the first day in the month is 1; the number of the last day may be in the interval from 28 to 31. Note that the return value may be differ for different inherited ASN1CTime classes.

Parameters:
- none
Returns:
Day of month component (1 - 31) is returned if the operation is successful. If the operation fails, a negative value is returned.

virtual int ASN1CTime::getHour (  )  [virtual]

This method returns the hour component of the time value.

As the ISO 8601 is based on the 24-hour timekeeping system, hours are represented by two-digit values from 00 to 23. Note that the return value may differ from different inherited ASN1CTime classes.

Parameters:
- none
Returns:
Hour component (0 - 23) is returned if the operation is successful. If the operation fails, a negative value is returned.

virtual int ASN1CTime::getMinute (  )  [virtual]

This method returns the minute component of the time value.

Minutes are represented by the two digits from 00 to 59. Note that the return value may differ from different inherited ASN1CTime classes.

Parameters:
- none
Returns:
Minute component (0 - 59) is returned if the operation is successful. If the operation fails, a negative value is returned.

virtual int ASN1CTime::getSecond (  )  [virtual]

This method returns the second component of the time value.

Seconds are represented by two digits from 00 to 59. Note that the return value may differ from different inherited ASN1CTime classes.

Parameters:
- none
Returns:
Second component (0 - 59) is returned if the operation is successful. If the operation fails, a negative value is returned.

virtual int ASN1CTime::getFraction (  )  [virtual]

This method returns the second's decimal component of the time value.

Second's decimal fraction is represented by one or more digits from 0 to 9. Note that the return value may differ for different inherited ASN1CTime classes.

Parameters:
- none
Returns:
Second's decimal fraction component (0 - 9) is returned if operation is successful. If the operation fails, a negative value is returned.

Reimplemented in ASN1CUTCTime.

virtual double ASN1CTime::getFractionAsDouble (  )  [virtual]

This method returns the second's decimal component of the time value. Second's fraction will be represented as double value more than 0 and less than 1.

Second's decimal fraction is represented by one or more digits from 0 to 9.

Returns:
Second's decimal fraction component is returned if operation is successful. If the operation fails, a negative value is returned.

virtual int ASN1CTime::getFractionStr ( char *const   pBuf,
size_t  bufSize 
) [virtual]

This method returns the second's decimal component of the time value. Second's fraction will be represented as string w/o integer part and decimal point.

Returns:
Length of the fraction string returned in pBuf, if operation is successful. If the operation fails, a negative value is returned.

virtual int ASN1CTime::getFractionLen (  )  [virtual]

This method returns the number of digits in second's decimal component of the time value.

Returns:
Second's decimal fraction's length is returned if operation is successful. If the operation fails, a negative value is returned.

virtual int ASN1CTime::getDiffHour (  )  [virtual]

This method returns the hour component of the difference between the time zone of the object and the Coordinated Universal Time (UTC).

The UTC time is the sum of the local time and a positive of negative time difference. Note that the return value may differ for different inherited ASN1CTime classes.

Parameters:
- none
Returns:
The negative or positive hour component of the difference between the time zone of the object and the UTC time (-12 - +12) is returned if the operation is successful. If the operation fails, a negative value is returned.

virtual int ASN1CTime::getDiffMinute (  )  [virtual]

This method returns the minute component of the difference between the time zone of the object and the Coordinated Universal Time (UTC).

The UTC time is the sum of the local time and a positive of negative time difference. Note that the return value may differ for different inherited ASN1CTime classes.

Parameters:
- none
Returns:
The negative or positive minute component of the difference between the time zone of the object and the UTC time (-59 - +59) is returned if the operation is successful. If the operation fails, a negative value is returned.

virtual int ASN1CTime::getDiff (  )  [virtual]

This method returns the difference between the time zone of the object and the Coordinated Universal Time (UTC).

The UTC time is the sum of the local time and a positive of negative time difference. Note that the return value may differ for different inherited ASN1CTime classes.

Parameters:
- none
Returns:
The negative or positive minute component of the difference between the time zone of the object and the UTC time (-12*60 - +12*60) is returned if the operation is successful. If the operation fails, a negative value is returned.

virtual OSBOOL ASN1CTime::getUTC (  )  [virtual]

This method returns the UTC flag state.

If the UTC flag is TRUE, then the time is a UTC time and symbol Z is added at the end of the time string. Otherwise, it is local time.

Parameters:
- none
Returns:
UTC flag state is returned.

virtual time_t ASN1CTime::getTime (  )  [virtual]

This method converts the time string to a value of the built-in C type time_t.

The value is the number of seconds from January 1, 1970. If the time is represned as UTC time plus or minus a time difference, then the resulting value will be recalculated as local time. For example, if the time string is "19991208120000+0930", then this string will be converted to "19991208213000" and then converted to a time_t value. Note that the return value may differ for different inherited ASN1CTime classes.

Parameters:
- none
Returns:
The time value, expressed as a number of seconds from January 1, 1970. If the operation fails, a negative value is returned.

void ASN1CTime::setDER ( OSBOOL  bvalue  )  [inline]

This method sets the 'use DER' flag which enforces the DER rules when time strings are constructed or parsed.

virtual int ASN1CTime::setUTC ( OSBOOL  utc  )  [virtual]

This method sets teh UTC flag state.

If the UTC flag is TRUE, then the time is a UTC time and symbol 'Z' is added to the end of the string. Otherwise, it is a local time.

Parameters:
utc UTC flag state.
Returns:
Completion status of operation:
  • 0 (0) = success,
  • negative return value is error.

virtual int ASN1CTime::setYear ( int  year_  )  [virtual]

This method sets the year component of the time value.

Note that the action of this method may differ for different inherited ASN1CTime classes.

Parameters:
year_ Year component (full 4 digits).
Returns:
Completion status of operation:
  • 0 (0) = success,
  • negative return value is error.

virtual int ASN1CTime::setMonth ( int  month_  )  [virtual]

This method sets the month number component of the time value.

The number of January is 1, February 2, ..., through December 12. You may use enumerated values for months encoding: ASN1CTime::January, ASN1CTime::February, etc. Also you can use short aliases for months: ASN1CTime::Jan, ASN1CTime::Feb, etc. Note that the action of this method may differ for different inherited ASN1CTime classes.

Parameters:
month_ Month component (1 - 12).
Returns:
Completion status of operation:
  • 0 (0) = success,
  • negative return value is error.

virtual int ASN1CTime::setDay ( int  day_  )  [virtual]

This method sets the day of month number component of the time value.

The number of the first day in the month is 1; the number of the last day in the month may be in the interval from 28 to 31. Note that the action of this method may differ for different inherited ASN1CTime classes.

Parameters:
day_ Day of month component (1 - 31).
Returns:
Completion status of operation:
  • 0 (0) = success,
  • negative return value is error.

virtual int ASN1CTime::setHour ( int  hour_  )  [virtual]

This method sets the hour component of the time value.

As the ISO 8601 is based on the 24-hour timekeeping system, hours are represented by two digits from 00 to 23. Note that the action of this method may differ for different inherited ASN1CTime classes.

Parameters:
hour_ Hour component (0 - 23).
Returns:
Completion status of operation:
  • 0 (0) = success,
  • negative return value is error.

virtual int ASN1CTime::setMinute ( int  minute_  )  [virtual]

This method sets the minute component of the time value.

Minutes are represented by two digits from 00 to 59. Note that the action of this method may differ for different inherited ASN1CTime classes.

Parameters:
minute_ Minute component (0 - 59).
Returns:
Completion status of operation:
  • 0 (0) = success,
  • negative return value is error.

virtual int ASN1CTime::setSecond ( int  second_  )  [virtual]

This method sets the second component of the time value.

Seconds are represented by two digits from 00 to 59. Note that the action of this method may differ form different inherited ASN1CTime classes.

Parameters:
second_ Second component (0 - 59).
Returns:
Completion status of operation:
  • 0 (0) = success,
  • negative return value is error.

virtual int ASN1CTime::setFraction ( int  fraction,
int  fracLen = -1 
) [virtual]

This method sets the second's decimal fraction component of the time value.

Second's decimal fraction is represented by one or more digits from 0 to 9. Note that the action of this method may differ for different inherited ASN1CTime classes.

Parameters:
fraction Second's decimal fraction component (0 - 9).
fracLen Optional parameter specifies number of digits in second's fraction.
Returns:
Completion status of operation:
  • 0 (0) = success,
  • negative return value is error.

virtual int ASN1CTime::setFraction ( double  frac,
int  fracLen 
) [virtual]

This method sets the second's decimal fraction component of the time value. Double value must be greater or equal 0 and less than 1.

Parameters:
frac Second's decimal fraction component.
fracLen Specifies number of digits in second's fraction.
Returns:
Completion status of operation:
  • 0 (ASN_OK) = success,
  • negative return value is error.

virtual int ASN1CTime::setFraction ( char const *  frac  )  [virtual]

This method sets the second's decimal fraction component of the time value. Double value must be greater or equal 0 and less than 1.

Parameters:
frac Second's decimal fraction component.
Returns:
Completion status of operation:
  • 0 (ASN_OK) = success,
  • negative return value is error.

virtual int ASN1CTime::setTime ( time_t  time,
OSBOOL  diffTime 
) [pure virtual]

This converts the value of the C built-in type time_t to a time string.

The value is the number of seconds from January 1, 1970. Note that the action of this method may differ for different inherited ASN1CTime Classes.

Parameters:
time The time value, expressed as a number of seconds from January 1, 1970.
diffTime TRUE means the difference between local time and UTC time will be calculated; in other case, only local time will be stored.
Returns:
Completion status of operation:
  • 0 (0) = success,
  • negative return value is error.

Implemented in ASN1CGeneralizedTime, and ASN1CUTCTime.

virtual int ASN1CTime::setDiffHour ( int  dhour  )  [virtual]

This method sets teh hour component of the difference between the time zone of the object and the Coordinated Universal Time (UTC).

The UTC time is the sum of the local time and a positive or negative time difference. Note that the action of this method may differ from different inherited ASN1CTime classes.

Parameters:
dhour The negative or positive hour component of the difference between the time zone of the object and the UTC time (-12 - +12) is returned if the operation is successful. If the operation fails, a negative value is returned.
Returns:
Completion status of operation:
  • 0 (0) = success,
  • negative return value is error.

virtual int ASN1CTime::setDiff ( int  dhour,
int  dminute 
) [virtual]

This method sets the hours and the minute components of the difference between the time zone of the object and Coordinated Universal Time (UTC).

The UTC time is the sum of the local time and a positive or negative time difference. Note that the action of this method may differ for different inherited ASN1CTime classes.

Parameters:
dhour The negative or positive hour component of the difference between the time zone of the object and the UTC time (-12 - +12).
dminute The negative or positive minute component of the difference between the time zone of the object and the UTC time (-59 - +59).
Returns:
Completion status of operation:
  • 0 (0) = success,
  • negative return value is error.

virtual int ASN1CTime::setDiff ( int  inMinutes  )  [virtual]

This method sets the difference between the time zone of the object and Coordinated Universal Time (UTC), in minutes.

The UTC time is the sum of the local time and a positive or negative time difference. Note that the action of this method may differ for different inherited ASN1CTime classes.

Parameters:
inMinutes The negative or positive difference, in minutes, between the time zone of the object and the UTC time (-12*60 - +12*60) is returned if the operation is successful.
Returns:
Completion status of operation:
  • 0 (0) = success,
  • negative return value is error.

virtual int ASN1CTime::parseString ( const char *  string  )  [virtual]

This method parses the given time string.

The string is expected to be in the ASN.1 value notation format for the given ASN.1 time string type. Note that the action of this method may differ for different inherited ASN1CTime classes.

Parameters:
string The time string value to be parsed.
Returns:
Completion status of operation:
  • 0 (0) = success,
  • negative return value is error.

virtual void ASN1CTime::clear (  )  [virtual]

This method clears the time string.

Note the action of this method may differ for different inherited ASN1CTime classes.

Parameters:
- none
Returns:
- none

virtual int ASN1CTime::equals ( ASN1CTime  )  [virtual]

This method compares times.


The documentation for this class was generated from the following file: