## LunarDate

LunarDate — Chinese Lunar Date Library

## Functions

LunarDate * | lunar_date_new ()
void | lunar_date_set_solar_date ()
void | lunar_date_set_lunar_date ()
gchar * | lunar_date_get_jieri ()
gchar * | lunar_date_strftime ()
void | lunar_date_free ()

## Types and Values

struct | LunarDate
enum | LunarDateError

## Object Hierarchy

        GObject
        ╰── LunarDate

## Includes

    #include <lunar-date/lunar-date.h>

## Description

The LunarDate provide Chinese lunar date library.

## Functions

### lunar_date_new ()

    LunarDate *
    lunar_date_new (void);

Allocates a LunarDate and initializes it. Free the return value with `lunar_date_free()`.

#### Returns

a newly-allocated LunarDate

### lunar_date_set_solar_date ()

    void
    lunar_date_set_solar_date (LunarDate *date,
                               GDateYear year,
                               GDateMonth month,
                               GDateDay day,
                               guint8 hour,
                               GError **error);

Sets the solar year, month, day and the hour for a LunarDate.

#### Parameters

date | a LunarDate. |
year | year to set. |
month | month to set. |
day | day to set. |
hour | hour to set. |
error | location to store the error occuring, or NULL to ignore errors. |

### lunar_date_set_lunar_date ()

    void
    lunar_date_set_lunar_date (LunarDate *date,
                               GDateYear year,
                               GDateMonth month,
                               GDateDay day,
                               guint8 hour,
                               gboolean isleap,
                               GError **error);

Sets the lunar year, month, day and the hour for a LunarDate. If the month is a leap month, you should set the isleap to TRUE.

#### Parameters

date | a LunarDate. |
year | year to set. |
month | month to set. |
day | day to set. |
hour | hour to set. |
isleap | indicate whether the month is a leap month. |
error | location to store the error occuring, or NULL to ignore errors. |

### lunar_date_get_jieri ()

    gchar *
    lunar_date_get_jieri (LunarDate *date,
                          const gchar *delimiter);

Returns the all holiday of the date, joined with the delimiter. The date must be valid.

#### Parameters

date | a LunarDate |
delimiter | used to join the holidays. |

#### Returns

a newly-allocated holiday string of the date. This can be changed in $XDG_CONFIG_HOME/liblunar/hodiday.dat file.

### lunar_date_strftime ()

    gchar *
    lunar_date_strftime (LunarDate *date,
                         const char *format);

使用给定的格式来输出字符串。类似于strftime的用法。可使用的格式及输出如下：

%(YEAR)年%(MONTH)月%(DAY)%(HOUR)日 公历：大写->二OO八年一月二十一日

%(year)年%(month)月%(day)%(hour)日 公历：小写->2008年1月21日

%(NIAN)年%(YUE)月%(RI)日%(SHI)时 阴历：大写->丁亥年腊月十四日，(月份前带"闰"表示闰月)

%(nian)年%(yue)月%(ri)日%(shi)时 阴历：小写->2007年12月14日，(月份前带"*"表示闰月)

%(Y60)年%(M60)月%(D60)日%(H60)时 干支：大写->丁亥年癸丑月庚申日

%(Y8)年%(M8)月%(D8)日%(H8)时 八字：大写->丁亥年癸丑月庚申日

%(shengxiao) 生肖：猪 %(jieri) 节日(节日、纪念日、节气等)：立春

使用%(jieri)时，如果此日没有节日或节气，那么将为空。 支持自定义节日，只要按照格式修改 $XDG_CONFIG_HOME/liblunar/hodiday.dat 文件即可。

#### Parameters

date | a LunarDate |
format | specify the output format. this |

#### Returns

a newly-allocated output string, nul-terminated

### lunar_date_free ()

    void
    lunar_date_free (LunarDate *date);

Frees a LunarDate returned from `lunar_date_new()`.

#### Parameters

date | a LunarDate |

## Types and Values

### struct LunarDate

    struct LunarDate;

All of these fields should be considered read-only.

### enum LunarDateError

#### Members

LUNAR_DATE_ERROR_INTERNAL | internal error. |
LUNAR_DATE_ERROR_YEAR | year setup error. |
LUNAR_DATE_ERROR_MONTH | month setup error. |
LUNAR_DATE_ERROR_DAY | day setup error. |
LUNAR_DATE_ERROR_HOUR | hour setup error. |
LUNAR_DATE_ERROR_LEAP | isleap setup error. |