gdatetime.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. /*
  2. * Copyright (C) 2009-2010 Christian Hergert <chris@dronelabs.com>
  3. * Copyright © 2010 Codethink Limited
  4. *
  5. * This library is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU Lesser General Public License as
  7. * published by the Free Software Foundation; either version 2.1 of the
  8. * licence, or (at your option) any later version.
  9. *
  10. * This is distributed in the hope that it will be useful, but WITHOUT
  11. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
  13. * License for more details.
  14. *
  15. * You should have received a copy of the GNU Lesser General Public
  16. * License along with this library; if not, write to the Free Software
  17. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
  18. * USA.
  19. *
  20. * Authors: Christian Hergert <chris@dronelabs.com>
  21. * Thiago Santos <thiago.sousa.santos@collabora.co.uk>
  22. * Emmanuele Bassi <ebassi@linux.intel.com>
  23. * Ryan Lortie <desrt@desrt.ca>
  24. */
  25. #ifndef __G_DATE_TIME_H__
  26. #define __G_DATE_TIME_H__
  27. #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
  28. #error "Only <glib.h> can be included directly."
  29. #endif
  30. #include <glib/gtimezone.h>
  31. G_BEGIN_DECLS
  32. /**
  33. * G_TIME_SPAN_DAY:
  34. *
  35. * Evaluates to a time span of one day.
  36. *
  37. * Since: 2.26
  38. */
  39. #define G_TIME_SPAN_DAY (G_GINT64_CONSTANT (86400000000))
  40. /**
  41. * G_TIME_SPAN_HOUR:
  42. *
  43. * Evaluates to a time span of one hour.
  44. *
  45. * Since: 2.26
  46. */
  47. #define G_TIME_SPAN_HOUR (G_GINT64_CONSTANT (3600000000))
  48. /**
  49. * G_TIME_SPAN_MINUTE:
  50. *
  51. * Evaluates to a time span of one minute.
  52. *
  53. * Since: 2.26
  54. */
  55. #define G_TIME_SPAN_MINUTE (G_GINT64_CONSTANT (60000000))
  56. /**
  57. * G_TIME_SPAN_SECOND:
  58. *
  59. * Evaluates to a time span of one second.
  60. *
  61. * Since: 2.26
  62. */
  63. #define G_TIME_SPAN_SECOND (G_GINT64_CONSTANT (1000000))
  64. /**
  65. * G_TIME_SPAN_MILLISECOND:
  66. *
  67. * Evaluates to a time span of one millisecond.
  68. *
  69. * Since: 2.26
  70. */
  71. #define G_TIME_SPAN_MILLISECOND (G_GINT64_CONSTANT (1000))
  72. /**
  73. * GTimeSpan:
  74. *
  75. * A value representing an interval of time, in microseconds.
  76. *
  77. * Since: 2.26
  78. */
  79. typedef gint64 GTimeSpan;
  80. /**
  81. * GDateTime:
  82. *
  83. * `GDateTime` is an opaque structure whose members
  84. * cannot be accessed directly.
  85. *
  86. * Since: 2.26
  87. */
  88. typedef struct _GDateTime GDateTime;
  89. GLIB_AVAILABLE_IN_ALL
  90. void g_date_time_unref (GDateTime *datetime);
  91. GLIB_AVAILABLE_IN_ALL
  92. GDateTime * g_date_time_ref (GDateTime *datetime);
  93. GLIB_AVAILABLE_IN_ALL
  94. GDateTime * g_date_time_new_now (GTimeZone *tz);
  95. GLIB_AVAILABLE_IN_ALL
  96. GDateTime * g_date_time_new_now_local (void);
  97. GLIB_AVAILABLE_IN_ALL
  98. GDateTime * g_date_time_new_now_utc (void);
  99. GLIB_AVAILABLE_IN_ALL
  100. GDateTime * g_date_time_new_from_unix_local (gint64 t);
  101. GLIB_AVAILABLE_IN_ALL
  102. GDateTime * g_date_time_new_from_unix_utc (gint64 t);
  103. GLIB_AVAILABLE_IN_ALL
  104. GDateTime * g_date_time_new_from_timeval_local (const GTimeVal *tv);
  105. GLIB_AVAILABLE_IN_ALL
  106. GDateTime * g_date_time_new_from_timeval_utc (const GTimeVal *tv);
  107. GLIB_AVAILABLE_IN_ALL
  108. GDateTime * g_date_time_new (GTimeZone *tz,
  109. gint year,
  110. gint month,
  111. gint day,
  112. gint hour,
  113. gint minute,
  114. gdouble seconds);
  115. GLIB_AVAILABLE_IN_ALL
  116. GDateTime * g_date_time_new_local (gint year,
  117. gint month,
  118. gint day,
  119. gint hour,
  120. gint minute,
  121. gdouble seconds);
  122. GLIB_AVAILABLE_IN_ALL
  123. GDateTime * g_date_time_new_utc (gint year,
  124. gint month,
  125. gint day,
  126. gint hour,
  127. gint minute,
  128. gdouble seconds);
  129. GLIB_AVAILABLE_IN_ALL
  130. G_GNUC_WARN_UNUSED_RESULT
  131. GDateTime * g_date_time_add (GDateTime *datetime,
  132. GTimeSpan timespan);
  133. GLIB_AVAILABLE_IN_ALL
  134. G_GNUC_WARN_UNUSED_RESULT
  135. GDateTime * g_date_time_add_years (GDateTime *datetime,
  136. gint years);
  137. GLIB_AVAILABLE_IN_ALL
  138. G_GNUC_WARN_UNUSED_RESULT
  139. GDateTime * g_date_time_add_months (GDateTime *datetime,
  140. gint months);
  141. GLIB_AVAILABLE_IN_ALL
  142. G_GNUC_WARN_UNUSED_RESULT
  143. GDateTime * g_date_time_add_weeks (GDateTime *datetime,
  144. gint weeks);
  145. GLIB_AVAILABLE_IN_ALL
  146. G_GNUC_WARN_UNUSED_RESULT
  147. GDateTime * g_date_time_add_days (GDateTime *datetime,
  148. gint days);
  149. GLIB_AVAILABLE_IN_ALL
  150. G_GNUC_WARN_UNUSED_RESULT
  151. GDateTime * g_date_time_add_hours (GDateTime *datetime,
  152. gint hours);
  153. GLIB_AVAILABLE_IN_ALL
  154. G_GNUC_WARN_UNUSED_RESULT
  155. GDateTime * g_date_time_add_minutes (GDateTime *datetime,
  156. gint minutes);
  157. GLIB_AVAILABLE_IN_ALL
  158. G_GNUC_WARN_UNUSED_RESULT
  159. GDateTime * g_date_time_add_seconds (GDateTime *datetime,
  160. gdouble seconds);
  161. GLIB_AVAILABLE_IN_ALL
  162. G_GNUC_WARN_UNUSED_RESULT
  163. GDateTime * g_date_time_add_full (GDateTime *datetime,
  164. gint years,
  165. gint months,
  166. gint days,
  167. gint hours,
  168. gint minutes,
  169. gdouble seconds);
  170. GLIB_AVAILABLE_IN_ALL
  171. gint g_date_time_compare (gconstpointer dt1,
  172. gconstpointer dt2);
  173. GLIB_AVAILABLE_IN_ALL
  174. GTimeSpan g_date_time_difference (GDateTime *end,
  175. GDateTime *begin);
  176. GLIB_AVAILABLE_IN_ALL
  177. guint g_date_time_hash (gconstpointer datetime);
  178. GLIB_AVAILABLE_IN_ALL
  179. gboolean g_date_time_equal (gconstpointer dt1,
  180. gconstpointer dt2);
  181. GLIB_AVAILABLE_IN_ALL
  182. void g_date_time_get_ymd (GDateTime *datetime,
  183. gint *year,
  184. gint *month,
  185. gint *day);
  186. GLIB_AVAILABLE_IN_ALL
  187. gint g_date_time_get_year (GDateTime *datetime);
  188. GLIB_AVAILABLE_IN_ALL
  189. gint g_date_time_get_month (GDateTime *datetime);
  190. GLIB_AVAILABLE_IN_ALL
  191. gint g_date_time_get_day_of_month (GDateTime *datetime);
  192. GLIB_AVAILABLE_IN_ALL
  193. gint g_date_time_get_week_numbering_year (GDateTime *datetime);
  194. GLIB_AVAILABLE_IN_ALL
  195. gint g_date_time_get_week_of_year (GDateTime *datetime);
  196. GLIB_AVAILABLE_IN_ALL
  197. gint g_date_time_get_day_of_week (GDateTime *datetime);
  198. GLIB_AVAILABLE_IN_ALL
  199. gint g_date_time_get_day_of_year (GDateTime *datetime);
  200. GLIB_AVAILABLE_IN_ALL
  201. gint g_date_time_get_hour (GDateTime *datetime);
  202. GLIB_AVAILABLE_IN_ALL
  203. gint g_date_time_get_minute (GDateTime *datetime);
  204. GLIB_AVAILABLE_IN_ALL
  205. gint g_date_time_get_second (GDateTime *datetime);
  206. GLIB_AVAILABLE_IN_ALL
  207. gint g_date_time_get_microsecond (GDateTime *datetime);
  208. GLIB_AVAILABLE_IN_ALL
  209. gdouble g_date_time_get_seconds (GDateTime *datetime);
  210. GLIB_AVAILABLE_IN_ALL
  211. gint64 g_date_time_to_unix (GDateTime *datetime);
  212. GLIB_AVAILABLE_IN_ALL
  213. gboolean g_date_time_to_timeval (GDateTime *datetime,
  214. GTimeVal *tv);
  215. GLIB_AVAILABLE_IN_ALL
  216. GTimeSpan g_date_time_get_utc_offset (GDateTime *datetime);
  217. GLIB_AVAILABLE_IN_ALL
  218. const gchar * g_date_time_get_timezone_abbreviation (GDateTime *datetime);
  219. GLIB_AVAILABLE_IN_ALL
  220. gboolean g_date_time_is_daylight_savings (GDateTime *datetime);
  221. GLIB_AVAILABLE_IN_ALL
  222. GDateTime * g_date_time_to_timezone (GDateTime *datetime,
  223. GTimeZone *tz);
  224. GLIB_AVAILABLE_IN_ALL
  225. GDateTime * g_date_time_to_local (GDateTime *datetime);
  226. GLIB_AVAILABLE_IN_ALL
  227. GDateTime * g_date_time_to_utc (GDateTime *datetime);
  228. GLIB_AVAILABLE_IN_ALL
  229. gchar * g_date_time_format (GDateTime *datetime,
  230. const gchar *format) G_GNUC_MALLOC;
  231. G_END_DECLS
  232. #endif /* __G_DATE_TIME_H__ */