## GODateConventions

GODateConventions

## Synopsis

                        GODateConventions;
                        GoCouponConvention;
    enum                GOBasisType;
    void                go_coup_cd                          (GDate *res,
                                                             GDate const *settle,
                                                             GDate const *mat,
                                                             int freq,
                                                             gboolean eom,
                                                             gboolean next);
    double              go_coupdaybs                        (GDate const *settlement,
                                                             GDate const *maturity,
                                                             GoCouponConvention const *conv);
    double              go_coupdays                         (GDate const *settlement,
                                                             GDate const *maturity,
                                                             GoCouponConvention const *conv);
    double              go_coupdaysnc                       (GDate const *settlement,
                                                             GDate const *maturity,
                                                             GoCouponConvention const *conv);
    gboolean            go_date_conv_equal                  (const GODateConventions *a,
                                                             const GODateConventions *b);
    const GODateConventions * go_date_conv_from_str         (const char *s);
    double              go_date_conv_translate              (double f,
                                                             const GODateConventions *src,
                                                             const GODateConventions *dst);
    int                 go_date_convention_base             (GODateConventions const *conv);
    gint32              go_date_days_between_basis          (GDate const *from,
                                                             GDate const *to,
                                                             GOBasisType basis);
    int                 go_date_g_months_between            (GDate const *date1,
                                                             GDate const *date2);
    int                 go_date_g_to_serial                 (GDate const *date,
                                                             GODateConventions const *conv);
    int                 go_date_g_years_between             (GDate const *date1,
                                                             GDate const *date2);
    char *              go_date_month_name                  (GDateMonth m,
                                                             gboolean abbrev);
    int                 go_date_serial_raw_to_seconds       (double raw);
    int                 go_date_serial_raw_to_serial        (double raw);
    void                go_date_serial_to_g                 (GDate *res,
                                                             int serial,
                                                             GODateConventions const *conv);
    time_t              go_date_serial_to_timet             (int serial,
                                                             GODateConventions const *conv);
    int                 go_date_timet_to_seconds            (time_t t);
    int                 go_date_timet_to_serial             (time_t t,
                                                             GODateConventions const *conv);
    double              go_date_timet_to_serial_raw         (time_t t,
                                                             GODateConventions const *conv);
    char *              go_date_weekday_name                (GDateWeekday wd,
                                                             gboolean abbrev);
    int                 go_date_weeknum                     (GDate const *date,
                                                             int method);

## Object Hierarchy

      GBoxed
       +----GODateConventions

## Description

## Details

### GODateConventions

    typedef struct {
    	gboolean use_1904; /* Use MacOffice 1904 based date convention,
    				 * Rather than the Win32 style 1900 */
    } GODateConventions;

gboolean `use_1904`; | use MacOffice 1904 based date convention, rather than the Win32 style 1900.

### GoCouponConvention

    typedef struct {
    	int	 freq;
    	GOBasisType  basis;
    	gboolean eom;
    	GODateConventions const *date_conv;
    } GoCouponConvention;

int `freq`; | frequency.
GOBasisType `basis`; | GOBasisType
gboolean `eom`; | end of month.
GODateConventions const *`date_conv`; | GODateConventions

### enum GOBasisType

    typedef enum {
     /* see doc/fn-financial-basis.txt for details */
    	GO_BASIS_MSRB_30_360     = 0,
    	GO_BASIS_ACT_ACT         = 1,
    	GO_BASIS_ACT_360         = 2,
    	GO_BASIS_ACT_365         = 3,
    	GO_BASIS_30E_360         = 4,
    	GO_BASIS_30Ep_360        = 5,
    	GO_BASIS_MSRB_30_360_SYM = 6         /* Gnumeric extension.  */
    } GOBasisType;

`GO_BASIS_MSRB_30_360` | US 30/360 (days in a month/days in a year)
`GO_BASIS_ACT_ACT` | actual days/actual days
`GO_BASIS_ACT_360` | actual days/360
`GO_BASIS_ACT_365` | actual days/365
`GO_BASIS_30E_360` | European 30/360
`GO_BASIS_30Ep_360` | ?
`GO_BASIS_MSRB_30_360_SYM` | ?

### go_coup_cd ()

    void                go_coup_cd                          (GDate *res,
                                                             GDate const *settle,
                                                             GDate const *mat,
                                                             int freq,
                                                             gboolean eom,
                                                             gboolean next);

### go_coupdaybs ()

    double              go_coupdaybs                        (GDate const *settlement,
                                                             GDate const *maturity,
                                                             GoCouponConvention const *conv);

`settlement` : | GDate
`maturity` : | GDate
`conv` : | GoCouponConvention
Returns : | the number of days from the beginning of the coupon period to the settlement date.

### go_coupdays ()

    double              go_coupdays                         (GDate const *settlement,
                                                             GDate const *maturity,
                                                             GoCouponConvention const *conv);

`settlement` : | GDate
`maturity` : | GDate
`conv` : | GoCouponConvention
Returns : | the number of days in the coupon period of the settlement date. Currently, returns negative numbers if the branch is not implemented.

### go_coupdaysnc ()

    double              go_coupdaysnc                       (GDate const *settlement,
                                                             GDate const *maturity,
                                                             GoCouponConvention const *conv);

`conv` : | GoCouponConvention
Returns : | the number of days from the settlement date to the next coupon date.

### go_date_conv_equal ()

    gboolean            go_date_conv_equal                  (const GODateConventions *a,
                                                             const GODateConventions *b);

### go_date_conv_from_str ()

    const GODateConventions * go_date_conv_from_str         (const char *s);

### go_date_conv_translate ()

    double              go_date_conv_translate              (double f,
                                                             const GODateConventions *src,
                                                             const GODateConventions *dst);

### go_date_convention_base ()

    int                 go_date_convention_base             (GODateConventions const *conv);

### go_date_days_between_basis ()

    gint32              go_date_days_between_basis          (GDate const *from,
                                                             GDate const *to,
                                                             GOBasisType basis);

### go_date_g_months_between ()

    int                 go_date_g_months_between            (GDate const *date1,
                                                             GDate const *date2);

### go_date_g_to_serial ()

    int                 go_date_g_to_serial                 (GDate const *date,
                                                             GODateConventions const *conv);

### go_date_g_years_between ()

    int                 go_date_g_years_between             (GDate const *date1,
                                                             GDate const *date2);

### go_date_month_name ()

    char *              go_date_month_name                  (GDateMonth m,
                                                             gboolean abbrev);

### go_date_serial_raw_to_seconds ()

    int                 go_date_serial_raw_to_seconds       (double raw);

### go_date_serial_raw_to_serial ()

    int                 go_date_serial_raw_to_serial        (double raw);

### go_date_serial_to_g ()

    void                go_date_serial_to_g                 (GDate *res,
                                                             int serial,
                                                             GODateConventions const *conv);

### go_date_serial_to_timet ()

    time_t              go_date_serial_to_timet             (int serial,
                                                             GODateConventions const *conv);

### go_date_timet_to_seconds ()

    int                 go_date_timet_to_seconds            (time_t t);

### go_date_timet_to_serial ()

    int                 go_date_timet_to_serial             (time_t t,
                                                             GODateConventions const *conv);

### go_date_timet_to_serial_raw ()

    double              go_date_timet_to_serial_raw         (time_t t,
                                                             GODateConventions const *conv);

### go_date_weekday_name ()

    char *              go_date_weekday_name                (GDateWeekday wd,
                                                             gboolean abbrev);

### go_date_weeknum ()

    int                 go_date_weeknum                     (GDate const *date,
                                                             int method);

`date` : | date
`method` : | week numbering method
Returns : | week number according to the given method. 1: Week starts on Sunday. January 1 is in week 1. 2: Week starts on Monday. January 1 is in week 1. 150: ISO 8601 week number.