3_12_GLib库入门与实践_时间、日期、时区

本文详细介绍了Glib库中用于处理时间、日期和时区的函数,包括创建、设置、比较、偏移和转换等功能。这些函数涵盖了从基本的时间戳获取到复杂的日期运算,以及时区的管理和转换,对于需要在C语言中进行时间日期操作的开发者来说非常实用。
摘要由CSDN通过智能技术生成

简介

时间、日期和时区操作函数。

数据结构

时间、日期、时区的数据结构如下。

struct GDate {
  guint julian_days : 32; // 儒略日

  guint julian : 1;    /* 是否为儒略日格式 */
  guint dmy    : 1;    /* 是否为dmy格式 */

  /* DMY 成员变量 年月日 */
  guint day    : 6;
  guint month  : 4;
  guint year   : 16;
};
typedef gint32  GTime;  // 时间
typedef guint8  GDateDay;  //日
enum GDateMonth  // 月
typedef guint16 GDateYear;  //年
enum GDateWeekday  // 星期
typedef struct _GTimeZone GTimeZone;  // 时区
typedef struct _GDateTime GDateTime;  // 日期时间对象
typedef gint64 GTimeSpan;  // 时间间隔

函数列表

void	g_get_current_time ()
void	g_usleep ()
void	g_time_val_add ()
gboolean	g_time_val_from_iso8601 ()
gchar *	g_time_val_to_iso8601 ()
gint64	g_get_monotonic_time ()
gint64	g_get_real_time ()
GDate *	g_date_new ()
GDate *	g_date_new_dmy ()
GDate *	g_date_new_julian ()
void	g_date_clear ()
void	g_date_free ()
GDate *	g_date_copy ()
void	g_date_set_day ()
void	g_date_set_month ()
void	g_date_set_year ()
void	g_date_set_dmy ()
void	g_date_set_julian ()
void	g_date_set_time ()
void	g_date_set_time_t ()
void	g_date_set_time_val ()
void	g_date_set_parse ()
void	g_date_add_days ()
void	g_date_subtract_days ()
void	g_date_add_months ()
void	g_date_subtract_months ()
void	g_date_add_years ()
void	g_date_subtract_years ()
gint	g_date_days_between ()
gint	g_date_compare ()
void	g_date_clamp ()
void	g_date_order ()
GDateDay	g_date_get_day ()
GDateMonth	g_date_get_month ()
GDateYear	g_date_get_year ()
guint32	g_date_get_julian ()
GDateWeekday	g_date_get_weekday ()
guint	g_date_get_day_of_year ()
guint8	g_date_get_days_in_month ()
gboolean	g_date_is_first_of_month ()
gboolean	g_date_is_last_of_month ()
gboolean	g_date_is_leap_year ()
guint	g_date_get_monday_week_of_year ()
guint8	g_date_get_monday_weeks_in_year ()
guint	g_date_get_sunday_week_of_year ()
guint8	g_date_get_sunday_weeks_in_year ()
guint	g_date_get_iso8601_week_of_year ()
gsize	g_date_strftime ()
void	g_date_to_struct_tm ()
gboolean	g_date_valid ()
gboolean	g_date_valid_day ()
gboolean	g_date_valid_month ()
gboolean	g_date_valid_year ()
gboolean	g_date_valid_dmy ()
gboolean	g_date_valid_julian ()
gboolean	g_date_valid_weekday ()
void	g_time_zone_unref ()
GTimeZone *	g_time_zone_ref ()
GTimeZone *	g_time_zone_new ()
GTimeZone *	g_time_zone_new_local ()
GTimeZone *	g_time_zone_new_utc ()
gint	g_time_zone_find_interval ()
gint	g_time_zone_adjust_time ()
const gchar *	g_time_zone_get_abbreviation ()
gint32	g_time_zone_get_offset ()
gboolean	g_time_zone_is_dst ()
void	g_date_time_unref ()
GDateTime *	g_date_time_ref ()
GDateTime *	g_date_time_new_now ()
GDateTime *	g_date_time_new_now_local ()
GDateTime *	g_date_time_new_now_utc ()
GDateTime *	g_date_time_new_from_unix_local ()
GDateTime *	g_date_time_new_from_unix_utc ()
GDateTime *	g_date_time_new_from_timeval_local ()
GDateTime *	g_date_time_new_from_timeval_utc ()
GDateTime *	g_date_time_new_from_iso8601 ()
GDateTime *	g_date_time_new ()
GDateTime *	g_date_time_new_local ()
GDateTime *	g_date_time_new_utc ()
GDateTime *	g_date_time_add ()
GDateTime *	g_date_time_add_years ()
GDateTime *	g_date_time_add_months ()
GDateTime *	g_date_time_add_weeks ()
GDateTime *	g_date_time_add_days ()
GDateTime *	g_date_time_add_hours ()
GDateTime *	g_date_time_add_minutes ()
GDateTime *	g_date_time_add_seconds ()
GDateTime *	g_date_time_add_full ()
gint	g_date_time_compare ()
GTimeSpan	g_date_time_difference ()
guint	g_date_time_hash ()
gboolean	g_date_time_equal ()
void	g_date_time_get_ymd ()
gint	g_date_time_get_year ()
gint	g_date_time_get_month ()
gint	g_date_time_get_day_of_month ()
gint	g_date_time_get_week_numbering_year ()
gint	g_date_time_get_week_of_year ()
gint	g_date_time_get_day_of_week ()
gint	g_date_time_get_day_of_year ()
gint	g_date_time_get_hour ()
gint	g_date_time_get_minute ()
gint	g_date_time_get_second ()
gint	g_date_time_get_microsecond ()
gdouble	g_date_time_get_seconds ()
gint64	g_date_time_to_unix ()
gboolean	g_date_time_to_timeval ()
GTimeSpan	g_date_time_get_utc_offset ()
const gchar *	g_date_time_get_timezone_abbreviation ()
gboolean	g_date_time_is_daylight_savings ()
GDateTime *	g_date_time_to_timezone ()
GDateTime *	g_date_time_to_local ()
GDateTime *	g_date_time_to_utc ()
gchar *	g_date_time_format ()

函数功能分类

// 休眠微秒 1s=1000ms(毫秒)=1000*1000us(微秒)
void	g_usleep ()

void	g_time_val_add ()
gboolean	g_time_val_from_iso8601 ()
gchar *	g_time_val_to_iso8601 ()
gint64	g_get_monotonic_time ()

// 获取当前时间,g_get_real_time返回Unix时间戳,更常用
gint64	g_get_real_time ()
void	g_get_current_time ()

// 创建清空销毁拷贝GDate对象
GDate *	g_date_new ()
GDate *	g_date_new_dmy ()
GDate *	g_date_new_julian ()
void	g_date_clear ()
void	g_date_free ()
GDate *	g_date_copy ()

// 设置时间及日期
void	g_date_set_day ()
void	g_date_set_month ()
void	g_date_set_year ()
void	g_date_set_dmy ()
void	g_date_set_julian ()
void	g_date_set_time ()
void	g_date_set_time_t ()
void	g_date_set_time_val ()

// 解析字符串格式的时间日期到GDate
void	g_date_set_parse ()

// 日期向前或向后偏移,带有智能检测,使日期仍为合法日期,偏移之后如果日期不对,则会自动修正,如,2月29日增加一年,若增加后不是闰年,则会调整到2月28日。
void	g_date_add_days ()
void	g_date_subtract_days ()
void	g_date_add_months ()
void	g_date_subtract_months ()
void	g_date_add_years ()
void	g_date_subtract_years ()

// 计算两个日期间的天数
gint	g_date_days_between ()
// 两个日期比较
gint	g_date_compare ()
// 若X在[low,high]范围内,则等于X;如果X小于low,则返回low;如果X大于high,则返回high
void	g_date_clamp ()
// 将两个日期较小的放在前面
void	g_date_order ()

// 以下函数通过字面意思也可理解
GDateDay	g_date_get_day ()
GDateMonth	g_date_get_month ()
GDateYear	g_date_get_year ()
guint32	g_date_get_julian ()
GDateWeekday	g_date_get_weekday ()
guint	g_date_get_day_of_year ()
guint8	g_date_get_days_in_month ()
gboolean	g_date_is_first_of_month ()
gboolean	g_date_is_last_of_month ()
gboolean	g_date_is_leap_year ()
guint	g_date_get_monday_week_of_year ()
guint8	g_date_get_monday_weeks_in_year ()
guint	g_date_get_sunday_week_of_year ()
guint8	g_date_get_sunday_weeks_in_year ()
guint	g_date_get_iso8601_week_of_year ()

// 格式转换
gsize	g_date_strftime ()
void	g_date_to_struct_tm ()

判断日期是否合法
gboolean	g_date_valid ()
gboolean	g_date_valid_day ()
gboolean	g_date_valid_month ()
gboolean	g_date_valid_year ()
gboolean	g_date_valid_dmy ()
gboolean	g_date_valid_julian ()
gboolean	g_date_valid_weekday ()
// 时区相关函数
void	g_time_zone_unref ()
GTimeZone *	g_time_zone_ref ()
GTimeZone *	g_time_zone_new ()
GTimeZone *	g_time_zone_new_local ()
GTimeZone *	g_time_zone_new_utc ()
gint	g_time_zone_find_interval ()
gint	g_time_zone_adjust_time ()
const gchar *	g_time_zone_get_abbreviation ()
gint32	g_time_zone_get_offset ()
gboolean	g_time_zone_is_dst ()
// GDateTime对象的引用和解引用
void	g_date_time_unref ()
GDateTime *	g_date_time_ref ()

// 创建一个GDateTime对象
GDateTime *	g_date_time_new_now ()
GDateTime *	g_date_time_new_now_local ()
GDateTime *	g_date_time_new_now_utc ()
GDateTime *	g_date_time_new_from_unix_local ()
GDateTime *	g_date_time_new_from_unix_utc ()
GDateTime *	g_date_time_new_from_timeval_local ()
GDateTime *	g_date_time_new_from_timeval_utc ()
GDateTime *	g_date_time_new_from_iso8601 ()
GDateTime *	g_date_time_new ()
GDateTime *	g_date_time_new_local ()
GDateTime *	g_date_time_new_utc ()

// 修改一个GDateTime对象,将其值增加
GDateTime *	g_date_time_add ()
GDateTime *	g_date_time_add_years ()
GDateTime *	g_date_time_add_months ()
GDateTime *	g_date_time_add_weeks ()
GDateTime *	g_date_time_add_days ()
GDateTime *	g_date_time_add_hours ()
GDateTime *	g_date_time_add_minutes ()
GDateTime *	g_date_time_add_seconds ()
GDateTime *	g_date_time_add_full ()

// 时间日期比较
gint	g_date_time_compare ()
// 计算两个GDateTime对象之间的不同
GTimeSpan	g_date_time_difference ()

// hash相关的两个函数
guint	g_date_time_hash ()
gboolean	g_date_time_equal ()

// 从GDateTime中获取相关值
void	g_date_time_get_ymd ()
gint	g_date_time_get_year ()
gint	g_date_time_get_month ()
gint	g_date_time_get_day_of_month ()
gint	g_date_time_get_week_numbering_year ()
gint	g_date_time_get_week_of_year ()
gint	g_date_time_get_day_of_week ()
gint	g_date_time_get_day_of_year ()
gint	g_date_time_get_hour ()
gint	g_date_time_get_minute ()
gint	g_date_time_get_second ()
gint	g_date_time_get_microsecond ()
gdouble	g_date_time_get_seconds ()

// GDateTime对象转换为unix时间戳
gint64	g_date_time_to_unix ()

// GDateTime转换为timeval
gboolean	g_date_time_to_timeval ()

GTimeSpan	g_date_time_get_utc_offset ()
const gchar *	g_date_time_get_timezone_abbreviation ()
gboolean	g_date_time_is_daylight_savings ()

// 时间日期格式转换
GDateTime *	g_date_time_to_timezone ()
GDateTime *	g_date_time_to_local ()
GDateTime *	g_date_time_to_utc ()
// 与strftime相似
gchar *	g_date_time_format ()

函数功能说明及综合演示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值