## Time-Related Utility Functions

Time-Related Utility Functions — Utility functions for time structure manipulation.

## Synopsis

    enum        ETimeParseStatus;
    ETimeParseStatus e_time_parse_date_and_time (const char *value,
                                                 struct tm *result);
    ETimeParseStatus e_time_parse_date          (const char *value,
                                                 struct tm *result);
    ETimeParseStatus e_time_parse_time          (const char *value,
                                                 struct tm *result);
    void        e_time_format_date_and_time     (struct tm *date_tm,
                                                 gboolean use_24_hour_format,
                                                 gboolean show_midnight,
                                                 gboolean show_zero_seconds,
                                                 char *buffer,
                                                 int buffer_size);
    void        e_time_format_time              (struct tm *date_tm,
                                                 gboolean use_24_hour_format,
                                                 gboolean show_zero_seconds,
                                                 char *buffer,
                                                 int buffer_size);
    time_t      e_mktime_utc                    (struct tm *tm);
    void        e_localtime_with_offset         (time_t tt,
                                                 struct tm *tm,
                                                 int *offset);

## Description

## Details

### enum ETimeParseStatus

    typedef enum {
    	E_TIME_PARSE_OK,
    	E_TIME_PARSE_NONE,
    	E_TIME_PARSE_INVALID
    } ETimeParseStatus;

`E_TIME_PARSE_OK` | The time string was parsed successfully.
`E_TIME_PARSE_NONE` | The time string was empty.
`E_TIME_PARSE_INVALID` | The time string was not formatted correctly.

### e_time_parse_date_and_time ()

    ETimeParseStatus e_time_parse_date_and_time (const char *value,
                                                 struct tm *result);

Parses a string `value` containing a date and a time and stores the result in `result`. The date in `value` is expected to be in a format like "Wed 3/13/00 14:20:00", though `gettext()` is used to support the appropriate local formats. There is also some leniency on the format of the string, e.g. the weekday can be skipped or 12-hour formats with am/pm can be used.

`value` : | The string to parse a date and time from.
`result` : | A tm to store the result in.
Returns : | E_TIME_PARSE_OK if the string was successfully parsed, E_TIME_PARSE_NONE if the string was empty, or E_TIME_PARSE_INVALID if the string could not be parsed.

### e_time_parse_date ()

    ETimeParseStatus e_time_parse_date          (const char *value,
                                                 struct tm *result);

Takes in a date string entered by the user and tries to convert it to a struct tm.

`value` : | A date string.
`result` : | Return value for the parsed date.
Returns : | An ETimeParseStatus result code indicating whether `value` was an empty string, a valid date, or an invalid date.

### e_time_parse_time ()

    ETimeParseStatus e_time_parse_time          (const char *value,
                                                 struct tm *result);

Parses `value`, a string containing a time. `value` is expected to be in a format like "14:20:00". `gettext()` is used to support the appropriate local formats and slightly different formats, such as 12-hour formats with am/pm, are accepted as well.

`value` : | The string to parse a time from.
`result` : | A tm to store the result in.
Returns : | An ETimeParseStatus result code indicating whether `value` was an empty string, a valid date, or an invalid date.

### e_time_format_date_and_time ()

    void        e_time_format_date_and_time     (struct tm *date_tm,
                                                 gboolean use_24_hour_format,
                                                 gboolean show_midnight,
                                                 gboolean show_zero_seconds,
                                                 char *buffer,
                                                 int buffer_size);

Creates a string representation of the time value `date_tm` and stores it in `buffer`. `buffer_size` should be at least 64 to be safe. If `show_midnight` is FALSE, and the time is midnight, then only the date is stored in `buffer`. If `show_zero_seconds` is FALSE, then if the time has zero seconds only the hour and minute of the time are stored in `buffer`.

`date_tm` : | The tm to convert to a string.
`use_24_hour_format` : | A gboolean.
`show_midnight` : | A gboolean.
`show_zero_seconds` : | A gboolean.
`buffer` : | A char buffer to store the time string in.
`buffer_size` : | The length of `buffer`.

### e_time_format_time ()

    void        e_time_format_time              (struct tm *date_tm,
                                                 gboolean use_24_hour_format,
                                                 gboolean show_zero_seconds,
                                                 char *buffer,
                                                 int buffer_size);

Creates a string representation of a time value in `date_tm` and stores it in `buffer`. `buffer_size` should be at least 64.

`date_tm` : | The tm to convert to a string.
`use_24_hour_format` : | A gboolean.
`show_zero_seconds` : | A gboolean.
`buffer` : | The char buffer to store the result in.
`buffer_size` : | The length of `buffer`.

### e_mktime_utc ()

    time_t      e_mktime_utc                    (struct tm *tm);

Like mktime(3), but assumes UTC instead of local timezone.

`tm` : | The tm to convert to a calendar time representation.
Returns : | The calendar time representation of `tm`.

### e_localtime_with_offset ()

    void        e_localtime_with_offset         (time_t tt,
                                                 struct tm *tm,
                                                 int *offset);

Converts the calendar time time representation `tt` to a broken-down time representation, store in `tm`, and provides the offset in seconds from UTC time, stored in `offset`.

`tt` : | The time_t to convert.
`tm` : | The tm to store the result in.
`offset` : | The int to store the offset in.