Struct XDate
This struct encapsulates a date and time value, and handles associated calculations and conversions between various formats.
Implements
Inherited Members
Namespace: ZedGraph
Assembly: ZedGraph.dll
Syntax
public struct XDate : IComparable
Remarks
This format stored as a double value representing days since a reference date (XL date 0.0 is December 30, 1899 at 00:00 hrs). Negative values are permissible, and the range of valid dates is from noon on January 1st, 4713 B.C. forward. Internally, the date calculations are done using Astronomical Julian Day numbers. The Astronomical Julian Day number is defined as the number of days since noon on January 1st, 4713 B.C. (also referred to as 12:00 on January 1, -4712). NOTE: MS Excel actually has an error in the Serial Date calculations because it errantly assumes 1900 is a leap year. The XDate calculations do not have this same error. Therefore, XDate and Excel Date Serial values are 1 day different up until the date value of 60 (in Excel, this is February 29th, 1900, and in XDate, this is February 28th, 1900). At a value of 61 (March 1st, 1900) or greater, they agree with eachother.
Constructors
| Improve this Doc View SourceXDate(DateTime)
Construct a date class from a DateTime struct.
Declaration
public XDate(DateTime dateTime)
Parameters
| Type | Name | Description |
|---|---|---|
| DateTime | dateTime | A DateTime struct containing the initial date information. |
XDate(Double)
Construct a date class from an XL date value.
Declaration
public XDate(double xlDate)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | xlDate | An XL Date value in floating point double format |
XDate(Int32, Int32, Int32)
Construct a date class from a calendar date (year, month, day). Assumes the time of day is 00:00 hrs
Declaration
public XDate(int year, int month, int day)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | year | An integer value for the year, e.g., 1995. |
| Int32 | month | An integer value for the month of the year, e.g., 8 for August. It is permissible to have months outside of the 1-12 range, which will rollover to the previous or next year. |
| Int32 | day | An integer value for the day of the month, e.g., 23. It is permissible to have day numbers outside of the 1-31 range, which will rollover to the previous or next month and year. |
XDate(Int32, Int32, Int32, Int32, Int32, Double)
Construct a date class from a calendar date and time (year, month, day, hour, minute, second), where seconds is a Double value (allowing fractional seconds).
Declaration
public XDate(int year, int month, int day, int hour, int minute, double second)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | year | An integer value for the year, e.g., 1995. |
| Int32 | month | An integer value for the month of the year, e.g., 8 for August. It is permissible to have months outside of the 1-12 range, which will rollover to the previous or next year. |
| Int32 | day | An integer value for the day of the month, e.g., 23. It is permissible to have day numbers outside of the 1-31 range, which will rollover to the previous or next month and year. |
| Int32 | hour | An integer value for the hour of the day, e.g. 15. It is permissible to have hour values outside the 0-23 range, which will rollover to the previous or next day. |
| Int32 | minute | An integer value for the minute, e.g. 45. It is permissible to have hour values outside the 0-59 range, which will rollover to the previous or next hour. |
| Double | second | A double value for the second, e.g. 35.75. It is permissible to have second values outside the 0-59 range, which will rollover to the previous or next minute. |
XDate(Int32, Int32, Int32, Int32, Int32, Int32)
Construct a date class from a calendar date and time (year, month, day, hour, minute, second).
Declaration
public XDate(int year, int month, int day, int hour, int minute, int second)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | year | An integer value for the year, e.g., 1995. |
| Int32 | month | An integer value for the month of the year, e.g., 8 for August. It is permissible to have months outside of the 1-12 range, which will rollover to the previous or next year. |
| Int32 | day | An integer value for the day of the month, e.g., 23. It is permissible to have day numbers outside of the 1-31 range, which will rollover to the previous or next month and year. |
| Int32 | hour | An integer value for the hour of the day, e.g. 15. It is permissible to have hour values outside the 0-23 range, which will rollover to the previous or next day. |
| Int32 | minute | An integer value for the minute, e.g. 45. It is permissible to have hour values outside the 0-59 range, which will rollover to the previous or next hour. |
| Int32 | second | An integer value for the second, e.g. 35. It is permissible to have second values outside the 0-59 range, which will rollover to the previous or next minute. |
XDate(Int32, Int32, Int32, Int32, Int32, Int32, Int32)
Construct a date class from a calendar date and time (year, month, day, hour, minute, second, millisecond).
Declaration
public XDate(int year, int month, int day, int hour, int minute, int second, int millisecond)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | year | An integer value for the year, e.g., 1995. |
| Int32 | month | An integer value for the month of the year, e.g., 8 for August. It is permissible to have months outside of the 1-12 range, which will rollover to the previous or next year. |
| Int32 | day | An integer value for the day of the month, e.g., 23. It is permissible to have day numbers outside of the 1-31 range, which will rollover to the previous or next month and year. |
| Int32 | hour | An integer value for the hour of the day, e.g. 15. It is permissible to have hour values outside the 0-23 range, which will rollover to the previous or next day. |
| Int32 | minute | An integer value for the minute, e.g. 45. It is permissible to have hour values outside the 0-59 range, which will rollover to the previous or next hour. |
| Int32 | second | An integer value for the second, e.g. 35. It is permissible to have second values outside the 0-59 range, which will rollover to the previous or next minute. |
| Int32 | millisecond | An integer value for the millisecond, e.g. 632. It is permissible to have millisecond values outside the 0-999 range, which will rollover to the previous or next second. |
XDate(XDate)
The Copy Constructor
Declaration
public XDate(XDate rhs)
Parameters
| Type | Name | Description |
|---|---|---|
| XDate | rhs | The GraphPane object from which to copy |
Fields
| Improve this Doc View SourceDefaultFormatStr
The default format string to be used in ToString() when no format is provided
Declaration
public const string DefaultFormatStr = "g"
Field Value
| Type | Description |
|---|---|
| String |
HoursPerDay
The number of hours in a day
Declaration
public const double HoursPerDay = 24
Field Value
| Type | Description |
|---|---|
| Double |
JulDayMax
The maximum valid Julian Day, which corresponds to December 31st, 9999 A.D.
Declaration
public const double JulDayMax = 5373483.5
Field Value
| Type | Description |
|---|---|
| Double |
JulDayMin
The minimum valid Julian Day, which corresponds to January 1st, 4713 B.C.
Declaration
public const double JulDayMin = 0
Field Value
| Type | Description |
|---|---|
| Double |
MillisecondsPerDay
The number of milliseconds in a day
Declaration
public const double MillisecondsPerDay = 86400000
Field Value
| Type | Description |
|---|---|
| Double |
MillisecondsPerSecond
The number of milliseconds in a second
Declaration
public const double MillisecondsPerSecond = 1000
Field Value
| Type | Description |
|---|---|
| Double |
MinutesPerDay
The number of minutes in a day
Declaration
public const double MinutesPerDay = 1440
Field Value
| Type | Description |
|---|---|
| Double |
MinutesPerHour
The number of minutes in an hour
Declaration
public const double MinutesPerHour = 60
Field Value
| Type | Description |
|---|---|
| Double |
MonthsPerYear
The number of months in a year
Declaration
public const double MonthsPerYear = 12
Field Value
| Type | Description |
|---|---|
| Double |
SecondsPerDay
The number of seconds in a day
Declaration
public const double SecondsPerDay = 86400
Field Value
| Type | Description |
|---|---|
| Double |
SecondsPerMinute
The number of seconds in a minute
Declaration
public const double SecondsPerMinute = 60
Field Value
| Type | Description |
|---|---|
| Double |
XLDay1
The Astronomical Julian Day number that corresponds to XL Date 0.0
Declaration
public const double XLDay1 = 2415018.5
Field Value
| Type | Description |
|---|---|
| Double |
XLDayMax
The maximum valid Excel Day, which corresponds to December 31st, 9999 A.D.
Declaration
public const double XLDayMax = 2958465
Field Value
| Type | Description |
|---|---|
| Double |
XLDayMin
The minimum valid Excel Day, which corresponds to January 1st, 4713 B.C.
Declaration
public const double XLDayMin = -2415018.5
Field Value
| Type | Description |
|---|---|
| Double |
Properties
| Improve this Doc View SourceDateTime
Gets or sets the date value for this item in .Net DateTime format.
Declaration
public DateTime DateTime { get; set; }
Property Value
| Type | Description |
|---|---|
| DateTime |
DecimalYear
Gets or sets the decimal year number (i.e., 1997.345) corresponding to this item.
Declaration
public double DecimalYear { get; set; }
Property Value
| Type | Description |
|---|---|
| Double |
IsValidDate
Returns true if this XDate struct is in the valid date range
Declaration
public bool IsValidDate { get; }
Property Value
| Type | Description |
|---|---|
| Boolean |
JulianDay
Gets or sets the date value for this item in Julain day format. This is the Astronomical Julian Day number, so a value of 0.0 corresponds to noon GMT on January 1st, -4712. Thus, Julian Day number 2,400,000.0 corresponds to noon GMT on November 16, 1858.
Declaration
public double JulianDay { get; set; }
Property Value
| Type | Description |
|---|---|
| Double |
XLDate
Gets or sets the date value for this item in MS Excel format.
Declaration
public double XLDate { get; set; }
Property Value
| Type | Description |
|---|---|
| Double |
Methods
| Improve this Doc View SourceAddDays(Double)
Add the specified number of days (can be fractional) to the current XDate instance.
Declaration
public void AddDays(double dDays)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | dDays | The incremental number of days (negative or positive) in floating point double format. |
AddHours(Double)
Add the specified number of hours (can be fractional) to the current XDate instance.
Declaration
public void AddHours(double dHours)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | dHours | The incremental number of hours (negative or positive) in floating point double format. |
AddMilliseconds(Double)
Add the specified number of milliseconds (can be fractional) to the current XDate instance.
Declaration
public void AddMilliseconds(double dMilliseconds)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | dMilliseconds | The incremental number of milliseconds (negative or positive) in floating point double format. |
AddMinutes(Double)
Add the specified number of minutes (can be fractional) to the current XDate instance.
Declaration
public void AddMinutes(double dMinutes)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | dMinutes | The incremental number of minutes (negative or positive) in floating point double format. |
AddMonths(Double)
Add the specified number of Months (can be fractional) to the current XDate instance.
Declaration
public void AddMonths(double dMonths)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | dMonths | The incremental number of months (negative or positive) in floating point double format. |
AddSeconds(Double)
Add the specified number of seconds (can be fractional) to the current XDate instance.
Declaration
public void AddSeconds(double dSeconds)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | dSeconds | The incremental number of seconds (negative or positive) in floating point double format. |
AddYears(Double)
Add the specified number of years (can be fractional) to the current XDate instance.
Declaration
public void AddYears(double dYears)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | dYears | The incremental number of years (negative or positive) in floating point double format. |
CalendarDateToJulianDay(Int32, Int32, Int32, Int32, Int32, Int32)
Calculate an Astronomical Julian Day number from the specified Calendar date (year, month, day, hour, minute, second), first normalizing all input data values
Declaration
public static double CalendarDateToJulianDay(int year, int month, int day, int hour, int minute, int second)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | year | The integer year value (e.g., 1994). |
| Int32 | month | The integer month value (e.g., 7 for July). |
| Int32 | day | The integer day value (e.g., 19 for the 19th day of the month). |
| Int32 | hour | The integer hour value (e.g., 14 for 2:00 pm). |
| Int32 | minute | The integer minute value (e.g., 35 for 35 minutes past the hour). |
| Int32 | second | The integer second value (e.g., 42 for 42 seconds past the minute). |
Returns
| Type | Description |
|---|---|
| Double | The corresponding Astronomical Julian Day number, expressed in double floating point format |
CalendarDateToJulianDay(Int32, Int32, Int32, Int32, Int32, Int32, Int32)
Calculate an Astronomical Julian Day number from the specified Calendar date (year, month, day, hour, minute, second), first normalizing all input data values
Declaration
public static double CalendarDateToJulianDay(int year, int month, int day, int hour, int minute, int second, int millisecond)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | year | The integer year value (e.g., 1994). |
| Int32 | month | The integer month value (e.g., 7 for July). |
| Int32 | day | The integer day value (e.g., 19 for the 19th day of the month). |
| Int32 | hour | The integer hour value (e.g., 14 for 2:00 pm). |
| Int32 | minute | The integer minute value (e.g., 35 for 35 minutes past the hour). |
| Int32 | second | The integer second value (e.g., 42 for 42 seconds past the minute). |
| Int32 | millisecond | The integer second value (e.g., 325 for 325 milliseconds past the minute). |
Returns
| Type | Description |
|---|---|
| Double | The corresponding Astronomical Julian Day number, expressed in double floating point format |
CalendarDateToXLDate(Int32, Int32, Int32, Int32, Int32, Double)
Calculate an XL Date from the specified Calendar date (year, month, day, hour, minute, second), first normalizing all input data values. The seconds value is a double type, allowing fractional seconds.
Declaration
public static double CalendarDateToXLDate(int year, int month, int day, int hour, int minute, double second)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | year | The integer year value (e.g., 1994). |
| Int32 | month | The integer month value (e.g., 7 for July). |
| Int32 | day | The integer day value (e.g., 19 for the 19th day of the month). |
| Int32 | hour | The integer hour value (e.g., 14 for 2:00 pm). |
| Int32 | minute | The integer minute value (e.g., 35 for 35 minutes past the hour). |
| Double | second | The double second value (e.g., 42.3 for 42.3 seconds past the minute). |
Returns
| Type | Description |
|---|---|
| Double | The corresponding XL date, expressed in double floating point format |
Remarks
The Calendar date is always based on the Gregorian Calendar. Note that the Gregorian calendar is really only valid from October 15, 1582 forward. The countries that adopted the Gregorian calendar first did so on October 4, 1582, so that the next day was October 15, 1582. Prior to that time the Julian Calendar was used. However, Prior to March 1, 4 AD the treatment of leap years was inconsistent, and prior to 45 BC the Julian Calendar did not exist. The XDate struct projects only Gregorian dates backwards and does not deal with Julian calendar dates at all. The ToString(Double, String) method will just append a "(BC)" notation to the end of any dates prior to 1 AD, since the DateTime struct throws an exception when formatting earlier dates.
CalendarDateToXLDate(Int32, Int32, Int32, Int32, Int32, Int32)
Calculate an XL Date from the specified Calendar date (year, month, day, hour, minute, second), first normalizing all input data values.
Declaration
public static double CalendarDateToXLDate(int year, int month, int day, int hour, int minute, int second)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | year | The integer year value (e.g., 1994). |
| Int32 | month | The integer month value (e.g., 7 for July). |
| Int32 | day | The integer day value (e.g., 19 for the 19th day of the month). |
| Int32 | hour | The integer hour value (e.g., 14 for 2:00 pm). |
| Int32 | minute | The integer minute value (e.g., 35 for 35 minutes past the hour). |
| Int32 | second | The integer second value (e.g., 42 for 42 seconds past the minute). |
Returns
| Type | Description |
|---|---|
| Double | The corresponding XL date, expressed in double floating point format |
Remarks
The Calendar date is always based on the Gregorian Calendar. Note that the Gregorian calendar is really only valid from October 15, 1582 forward. The countries that adopted the Gregorian calendar first did so on October 4, 1582, so that the next day was October 15, 1582. Prior to that time the Julian Calendar was used. However, Prior to March 1, 4 AD the treatment of leap years was inconsistent, and prior to 45 BC the Julian Calendar did not exist. The XDate struct projects only Gregorian dates backwards and does not deal with Julian calendar dates at all. The ToString(Double, String) method will just append a "(BC)" notation to the end of any dates prior to 1 AD, since the DateTime struct throws an exception when formatting earlier dates.
CalendarDateToXLDate(Int32, Int32, Int32, Int32, Int32, Int32, Int32)
Calculate an XL Date from the specified Calendar date (year, month, day, hour, minute, second), first normalizing all input data values.
Declaration
public static double CalendarDateToXLDate(int year, int month, int day, int hour, int minute, int second, int millisecond)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | year | The integer year value (e.g., 1994). |
| Int32 | month | The integer month value (e.g., 7 for July). |
| Int32 | day | The integer day value (e.g., 19 for the 19th day of the month). |
| Int32 | hour | The integer hour value (e.g., 14 for 2:00 pm). |
| Int32 | minute | The integer minute value (e.g., 35 for 35 minutes past the hour). |
| Int32 | second | The integer second value (e.g., 42 for 42 seconds past the minute). |
| Int32 | millisecond | The integer millisecond value (e.g., 374 for 374 milliseconds past the second). |
Returns
| Type | Description |
|---|---|
| Double | The corresponding XL date, expressed in double floating point format |
Remarks
The Calendar date is always based on the Gregorian Calendar. Note that the Gregorian calendar is really only valid from October 15, 1582 forward. The countries that adopted the Gregorian calendar first did so on October 4, 1582, so that the next day was October 15, 1582. Prior to that time the Julian Calendar was used. However, Prior to March 1, 4 AD the treatment of leap years was inconsistent, and prior to 45 BC the Julian Calendar did not exist. The XDate struct projects only Gregorian dates backwards and does not deal with Julian calendar dates at all. The ToString(Double, String) method will just append a "(BC)" notation to the end of any dates prior to 1 AD, since the DateTime struct throws an exception when formatting earlier dates.
CompareTo(Object)
Compares one XDate object to another.
Declaration
public int CompareTo(object target)
Parameters
| Type | Name | Description |
|---|---|---|
| Object | target | The second XDate object to be compared. |
Returns
| Type | Description |
|---|---|
| Int32 | zero if |
Remarks
This method will throw an exception if target is not an
XDate object.
DateTimeToXLDate(DateTime)
Convert a .Net DateTime struct to an XL Format date
Declaration
public static double DateTimeToXLDate(DateTime dt)
Parameters
| Type | Name | Description |
|---|---|---|
| DateTime | dt | The date value in the form of a .Net DateTime struct |
Returns
| Type | Description |
|---|---|
| Double | The corresponding XL Date, expressed in double floating point format |
DecimalYearToXLDate(Double)
Calculate a decimal year value (e.g., 1994.6523) corresponding to the specified XL date
Declaration
public static double DecimalYearToXLDate(double yearDec)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | yearDec | The decimal year value in floating point double format. |
Returns
| Type | Description |
|---|---|
| Double | The corresponding XL Date, expressed in double floating point format |
Equals(Object)
Tests whether obj is either an XDate structure or
a double floating point value that is equal to the same date as this XDate
struct instance.
Declaration
public override bool Equals(object obj)
Parameters
| Type | Name | Description |
|---|---|---|
| Object | obj | The object to compare for equality with this XDate instance. This object should be either a type XDate or type double. |
Returns
| Type | Description |
|---|---|
| Boolean | Returns |
Overrides
| Improve this Doc View SourceGetDate(out Int32, out Int32, out Int32)
Get the calendar date (year, month, day) corresponding to this instance.
Declaration
public void GetDate(out int year, out int month, out int day)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | year | An integer value for the year, e.g., 1995. |
| Int32 | month | An integer value for the month of the year, e.g., 8 for August. |
| Int32 | day | An integer value for the day of the month, e.g., 23. |
GetDate(out Int32, out Int32, out Int32, out Int32, out Int32, out Int32)
Get the calendar date (year, month, day, hour, minute, second) corresponding to this instance.
Declaration
public void GetDate(out int year, out int month, out int day, out int hour, out int minute, out int second)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | year | An integer value for the year, e.g., 1995. |
| Int32 | month | An integer value for the month of the year, e.g., 8 for August. |
| Int32 | day | An integer value for the day of the month, e.g., 23. |
| Int32 | hour | An integer value for the hour of the day, e.g. 15. |
| Int32 | minute | An integer value for the minute, e.g. 45. |
| Int32 | second | An integer value for the second, e.g. 35. |
GetDayOfYear()
Get the day of year value (241.345 means the 241st day of the year) corresponding to this instance.
Declaration
public double GetDayOfYear()
Returns
| Type | Description |
|---|---|
| Double | The day of the year in floating point double format. |
GetHashCode()
Returns the hash code for this XDate structure. In this case, the hash code is simply the equivalent hash code for the floating point double date value.
Declaration
public override int GetHashCode()
Returns
| Type | Description |
|---|---|
| Int32 | An integer representing the hash code for this XDate value |
Overrides
| Improve this Doc View SourceJulianDayToCalendarDate(Double, out Int32, out Int32, out Int32, out Int32, out Int32, out Double)
Calculate a Calendar date (year, month, day, hour, minute, second) corresponding to the Astronomical Julian Day number
Declaration
public static void JulianDayToCalendarDate(double jDay, out int year, out int month, out int day, out int hour, out int minute, out double second)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | jDay | The Astronomical Julian Day number to be converted |
| Int32 | year | The integer year value (e.g., 1994). |
| Int32 | month | The integer month value (e.g., 7 for July). |
| Int32 | day | The integer day value (e.g., 19 for the 19th day of the month). |
| Int32 | hour | The integer hour value (e.g., 14 for 2:00 pm). |
| Int32 | minute | The integer minute value (e.g., 35 for 35 minutes past the hour). |
| Double | second | The double second value (e.g., 42.3 for 42.3 seconds past the minute). |
JulianDayToCalendarDate(Double, out Int32, out Int32, out Int32, out Int32, out Int32, out Int32)
Calculate a Calendar date (year, month, day, hour, minute, second) corresponding to the Astronomical Julian Day number
Declaration
public static void JulianDayToCalendarDate(double jDay, out int year, out int month, out int day, out int hour, out int minute, out int second)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | jDay | The Astronomical Julian Day number to be converted |
| Int32 | year | The integer year value (e.g., 1994). |
| Int32 | month | The integer month value (e.g., 7 for July). |
| Int32 | day | The integer day value (e.g., 19 for the 19th day of the month). |
| Int32 | hour | The integer hour value (e.g., 14 for 2:00 pm). |
| Int32 | minute | The integer minute value (e.g., 35 for 35 minutes past the hour). |
| Int32 | second | The integer second value (e.g., 42 for 42 seconds past the minute). |
JulianDayToCalendarDate(Double, out Int32, out Int32, out Int32, out Int32, out Int32, out Int32, out Double)
Calculate a Calendar date (year, month, day, hour, minute, second) corresponding to the Astronomical Julian Day number
Declaration
public static void JulianDayToCalendarDate(double jDay, out int year, out int month, out int day, out int hour, out int minute, out int second, out double millisecond)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | jDay | The Astronomical Julian Day number to be converted |
| Int32 | year | The integer year value (e.g., 1994). |
| Int32 | month | The integer month value (e.g., 7 for July). |
| Int32 | day | The integer day value (e.g., 19 for the 19th day of the month). |
| Int32 | hour | The integer hour value (e.g., 14 for 2:00 pm). |
| Int32 | minute | The integer minute value (e.g., 35 for 35 minutes past the hour). |
| Int32 | second | The integer second value (e.g., 42 for 42 seconds past the minute). |
| Double | millisecond | The Double millisecond value (e.g., 342.5 for 342.5 milliseconds past the second). |
JulianDayToXLDate(Double)
Calculate an XL Date corresponding to the specified Astronomical Julian Day number
Declaration
public static double JulianDayToXLDate(double jDay)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | jDay | The Astronomical Julian Day number in floating point double format. |
Returns
| Type | Description |
|---|---|
| Double | The corresponding XL Date, expressed in double floating point format |
MakeValidDate(Double)
Take the specified date, and bound it to the valid date range for the XDate struct.
Declaration
public static double MakeValidDate(double xlDate)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | xlDate | The date to be bounded |
Returns
| Type | Description |
|---|---|
| Double | An XLDate value that lies between the minimum and maximum valid date ranges (see XLDayMin and XLDayMax) |
SetDate(Int32, Int32, Int32)
Set the calendar date (year, month, day) of this instance.
Declaration
public void SetDate(int year, int month, int day)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | year | An integer value for the year, e.g., 1995. |
| Int32 | month | An integer value for the month of the year, e.g., 8 for August. |
| Int32 | day | An integer value for the day of the month, e.g., 23. |
SetDate(Int32, Int32, Int32, Int32, Int32, Int32)
Set the calendar date (year, month, day, hour, minute, second) of this instance.
Declaration
public void SetDate(int year, int month, int day, int hour, int minute, int second)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | year | An integer value for the year, e.g., 1995. |
| Int32 | month | An integer value for the month of the year, e.g., 8 for August. |
| Int32 | day | An integer value for the day of the month, e.g., 23. |
| Int32 | hour | An integer value for the hour of the day, e.g. 15. |
| Int32 | minute | An integer value for the minute, e.g. 45. |
| Int32 | second | An integer value for the second, e.g. 35. |
ToString()
Format this XDate value using the default format string (see cref="DefaultFormatStr"/>).
Declaration
public override string ToString()
Returns
| Type | Description |
|---|---|
| String | A string representation of the date |
Overrides
Remarks
The formatting is done using the DateTime ToString(String) method in order to provide full localization capability. The DateTime struct is limited to dates from 1 AD onward. However, all calendar dates in XDate and DateTime are projected Gregorian calendar dates. Since the Gregorian calendar was not implemented until October 4, 1582 (or later in some countries), Gregorian dates prior to that time are really dates that would have been, had the Gregorian calendar existed. In order to avoid throwing an exception, for dates prior to 1 AD, the year will be converted to a positive year and the text "(BC)" is appended to the end of the formatted string. Under this mode, the year sequence is 2BC, 1BC, 1AD, 2AD, etc. There is no year zero.
ToString(Double)
Format this XDate value using the default format string (DefaultFormatStr).
Declaration
public string ToString(double xlDate)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | xlDate | The XL date value to be formatted in floating point double format. |
Returns
| Type | Description |
|---|---|
| String | A string representation of the date |
Remarks
The formatting is done using the DateTime ToString(String) method in order to provide full localization capability. The DateTime struct is limited to dates from 1 AD onward. However, all calendar dates in XDate and DateTime are projected Gregorian calendar dates. Since the Gregorian calendar was not implemented until October 4, 1582 (or later in some countries), Gregorian dates prior to that time are really dates that would have been, had the Gregorian calendar existed. In order to avoid throwing an exception, for dates prior to 1 AD, the year will be converted to a positive year and the text "(BC)" is appended to the end of the formatted string. Under this mode, the year sequence is 2BC, 1BC, 1AD, 2AD, etc. There is no year zero.
ToString(Double, String)
Format the specified XL Date value using the specified format string. The format string is specified according to the DateTime class.
Declaration
public static string ToString(double xlDate, string fmtStr)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | xlDate | The XL date value to be formatted in floating point double format. |
| String | fmtStr | The formatting string to be used for the date. See DateTimeFormatInfo for a list of the format types available. |
Returns
| Type | Description |
|---|---|
| String | A string representation of the date |
Remarks
The formatting is done using the DateTime ToString(String) method in order to provide full localization capability. The DateTime struct is limited to dates from 1 AD onward. However, all calendar dates in XDate and DateTime are projected Gregorian calendar dates. Since the Gregorian calendar was not implemented until October 4, 1582 (or later in some countries), Gregorian dates prior to that time are really dates that would have been, had the Gregorian calendar existed. In order to avoid throwing an exception, for dates prior to 1 AD, the year will be converted to a positive year and the text "(BC)" is appended to the end of the formatted string. Under this mode, the year sequence is 2BC, 1BC, 1AD, 2AD, etc. There is no year zero.
ToString(String)
Format this XL Date value using the specified format string. The format string is specified according to the DateTime class.
Declaration
public string ToString(string fmtStr)
Parameters
| Type | Name | Description |
|---|---|---|
| String | fmtStr | The formatting string to be used for the date. See DateTimeFormatInfo class for a list of the format types available. |
Returns
| Type | Description |
|---|---|
| String | A string representation of the date |
Remarks
The formatting is done using the DateTime ToString(String) method in order to provide full localization capability. The DateTime struct is limited to dates from 1 AD onward. However, all calendar dates in XDate and DateTime are projected Gregorian calendar dates. Since the Gregorian calendar was not implemented until October 4, 1582 (or later in some countries), Gregorian dates prior to that time are really dates that would have been, had the Gregorian calendar existed. In order to avoid throwing an exception, for dates prior to 1 AD, the year will be converted to a positive year and the text "(BC)" is appended to the end of the formatted string. Under this mode, the year sequence is 2BC, 1BC, 1AD, 2AD, etc. There is no year zero.
XLDateToCalendarDate(Double, out Int32, out Int32, out Int32, out Int32, out Int32, out Double)
Calculate a Calendar date (year, month, day, hour, minute, second) corresponding to the specified XL date
Declaration
public static void XLDateToCalendarDate(double xlDate, out int year, out int month, out int day, out int hour, out int minute, out double second)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | xlDate | The XL date value in floating point double format. |
| Int32 | year | The integer year value (e.g., 1994). |
| Int32 | month | The integer month value (e.g., 7 for July). |
| Int32 | day | The integer day value (e.g., 19 for the 19th day of the month). |
| Int32 | hour | The integer hour value (e.g., 14 for 2:00 pm). |
| Int32 | minute | The integer minute value (e.g., 35 for 35 minutes past the hour). |
| Double | second | The double second value (e.g., 42.3 for 42.3 seconds past the minute). |
XLDateToCalendarDate(Double, out Int32, out Int32, out Int32, out Int32, out Int32, out Int32)
Calculate a Calendar date (year, month, day, hour, minute, second) corresponding to the specified XL date
Declaration
public static void XLDateToCalendarDate(double xlDate, out int year, out int month, out int day, out int hour, out int minute, out int second)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | xlDate | The XL date value in floating point double format. |
| Int32 | year | The integer year value (e.g., 1994). |
| Int32 | month | The integer month value (e.g., 7 for July). |
| Int32 | day | The integer day value (e.g., 19 for the 19th day of the month). |
| Int32 | hour | The integer hour value (e.g., 14 for 2:00 pm). |
| Int32 | minute | The integer minute value (e.g., 35 for 35 minutes past the hour). |
| Int32 | second | The integer second value (e.g., 42 for 42 seconds past the minute). |
XLDateToCalendarDate(Double, out Int32, out Int32, out Int32, out Int32, out Int32, out Int32, out Int32)
Calculate a Calendar date (year, month, day, hour, minute, second) corresponding to the specified XL date
Declaration
public static void XLDateToCalendarDate(double xlDate, out int year, out int month, out int day, out int hour, out int minute, out int second, out int millisecond)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | xlDate | The XL date value in floating point double format. |
| Int32 | year | The integer year value (e.g., 1994). |
| Int32 | month | The integer month value (e.g., 7 for July). |
| Int32 | day | The integer day value (e.g., 19 for the 19th day of the month). |
| Int32 | hour | The integer hour value (e.g., 14 for 2:00 pm). |
| Int32 | minute | The integer minute value (e.g., 35 for 35 minutes past the hour). |
| Int32 | second | The integer second value (e.g., 42 for 42 seconds past the minute). |
| Int32 | millisecond | The integer millisecond value (e.g., 325 for 325 milliseconds past the second). |
XLDateToDateTime(Double)
Convert an XL date format to a .Net DateTime struct
Declaration
public static DateTime XLDateToDateTime(double xlDate)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | xlDate | The XL date value in floating point double format. |
Returns
| Type | Description |
|---|---|
| DateTime | The corresponding XL Date, expressed in double floating point format |
XLDateToDayOfWeek(Double)
Calculate a day-of-week value (e.g., Sun=0, Mon=1, Tue=2, etc.) corresponding to the specified XL date
Declaration
public static int XLDateToDayOfWeek(double xlDate)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | xlDate | The XL date value in floating point double format. |
Returns
| Type | Description |
|---|---|
| Int32 | The corresponding day-of-week (DoW) value, expressed in integer format |
XLDateToDayOfYear(Double)
Calculate a day-of-year value (e.g., 241.543 corresponds to the 241st day of the year) corresponding to the specified XL date
Declaration
public static double XLDateToDayOfYear(double xlDate)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | xlDate | The XL date value in floating point double format. |
Returns
| Type | Description |
|---|---|
| Double | The corresponding day-of-year (DoY) value, expressed in double floating point format |
XLDateToDecimalYear(Double)
Calculate a decimal year value (e.g., 1994.6523) corresponding to the specified XL date
Declaration
public static double XLDateToDecimalYear(double xlDate)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | xlDate | The XL date value in floating point double format. |
Returns
| Type | Description |
|---|---|
| Double | The corresponding decimal year value, expressed in double floating point format |
XLDateToJulianDay(Double)
Calculate an Astronomical Julian Day number corresponding to the specified XL date
Declaration
public static double XLDateToJulianDay(double xlDate)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | xlDate | The XL date value in floating point double format. |
Returns
| Type | Description |
|---|---|
| Double | The corresponding Astronomical Julian Day number, expressed in double floating point format |
Operators
| Improve this Doc View SourceAddition(XDate, Double)
'+' operator overload. When a double value is added to an XDate, the result is a new XDate with the number of days added.
Declaration
public static XDate operator +(XDate lhs, double rhs)
Parameters
| Type | Name | Description |
|---|---|---|
| XDate | lhs | The left-hand-side of the '-' operator (an XDate class) |
| Double | rhs | The right-hand-side of the '+' operator (a double value) |
Returns
| Type | Description |
|---|---|
| XDate | An XDate with the rhs number of days added |
Decrement(XDate)
'--' operator overload. Decrement the date by one day.
Declaration
public static XDate operator --(XDate xDate)
Parameters
| Type | Name | Description |
|---|---|---|
| XDate | xDate | The XDate struct on which to operate |
Returns
| Type | Description |
|---|---|
| XDate | An XDate one day prior to the specified date |
Implicit(DateTime to XDate)
Declaration
public static implicit operator XDate(DateTime dt)
Parameters
| Type | Name | Description |
|---|---|---|
| DateTime | dt | The DateTime struct on which to operate |
Returns
| Type | Description |
|---|---|
| XDate | An XDate struct representing the specified DateTime value. |
Implicit(Double to XDate)
Implicit conversion from double (an XL Date) to XDate.
Declaration
public static implicit operator XDate(double xlDate)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | xlDate | The XDate struct on which to operate |
Returns
| Type | Description |
|---|---|
| XDate | An XDate struct representing the specified xlDate value. |
Implicit(XDate to DateTime)
Implicit conversion from XDate to DateTime.
Declaration
public static implicit operator DateTime(XDate xDate)
Parameters
| Type | Name | Description |
|---|---|---|
| XDate | xDate | The XDate struct on which to operate |
Returns
| Type | Description |
|---|---|
| DateTime | A DateTime struct representing the specified xDate value. |
Implicit(XDate to Double)
Implicit conversion from XDate to double (an XL Date).
Declaration
public static implicit operator double (XDate xDate)
Parameters
| Type | Name | Description |
|---|---|---|
| XDate | xDate | The XDate struct on which to operate |
Returns
| Type | Description |
|---|---|
| Double | A double floating point value representing the XL Date |
Implicit(XDate to Single)
Implicit conversion from XDate to float (an XL Date).
Declaration
public static implicit operator float (XDate xDate)
Parameters
| Type | Name | Description |
|---|---|---|
| XDate | xDate | The XDate struct on which to operate |
Returns
| Type | Description |
|---|---|
| Single | A double floating point value representing the XL Date |
Increment(XDate)
'++' operator overload. Increment the date by one day.
Declaration
public static XDate operator ++(XDate xDate)
Parameters
| Type | Name | Description |
|---|---|---|
| XDate | xDate | The XDate struct on which to operate |
Returns
| Type | Description |
|---|---|
| XDate | An XDate one day later than the specified date |
Subtraction(XDate, Double)
'-' operator overload. When a double value is subtracted from an XDate, the result is a new XDate with the number of days subtracted.
Declaration
public static XDate operator -(XDate lhs, double rhs)
Parameters
| Type | Name | Description |
|---|---|---|
| XDate | lhs | The left-hand-side of the '-' operator (an XDate class) |
| Double | rhs | The right-hand-side of the '-' operator (a double value) |
Returns
| Type | Description |
|---|---|
| XDate | An XDate with the rhs number of days subtracted |
Subtraction(XDate, XDate)
'-' operator overload. When two XDates are subtracted, the number of days between dates is returned.
Declaration
public static double operator -(XDate lhs, XDate rhs)
Parameters
| Type | Name | Description |
|---|---|---|
| XDate | lhs | The left-hand-side of the '-' operator (an XDate class) |
| XDate | rhs | The right-hand-side of the '-' operator (an XDate class) |
Returns
| Type | Description |
|---|---|
| Double | The days between dates, expressed as a floating point double |