gdatetime.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  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 License
  16. * along with this library; if not, see <http://www.gnu.org/licenses/>.
  17. *
  18. * Authors: Christian Hergert <chris@dronelabs.com>
  19. * Thiago Santos <thiago.sousa.santos@collabora.co.uk>
  20. * Emmanuele Bassi <ebassi@linux.intel.com>
  21. * Ryan Lortie <desrt@desrt.ca>
  22. */
  23. #ifndef __G_DATE_TIME_H__
  24. #define __G_DATE_TIME_H__
  25. #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
  26. #error "Only <glib.h> can be included directly."
  27. #endif
  28. #include <glib/gtimezone.h>
  29. G_BEGIN_DECLS
  30. /**
  31. * G_TIME_SPAN_DAY:
  32. *
  33. * Evaluates to a time span of one day.
  34. *
  35. * Since: 2.26
  36. */
  37. #define G_TIME_SPAN_DAY (G_GINT64_CONSTANT (86400000000))
  38. /**
  39. * G_TIME_SPAN_HOUR:
  40. *
  41. * Evaluates to a time span of one hour.
  42. *
  43. * Since: 2.26
  44. */
  45. #define G_TIME_SPAN_HOUR (G_GINT64_CONSTANT (3600000000))
  46. /**
  47. * G_TIME_SPAN_MINUTE:
  48. *
  49. * Evaluates to a time span of one minute.
  50. *
  51. * Since: 2.26
  52. */
  53. #define G_TIME_SPAN_MINUTE (G_GINT64_CONSTANT (60000000))
  54. /**
  55. * G_TIME_SPAN_SECOND:
  56. *
  57. * Evaluates to a time span of one second.
  58. *
  59. * Since: 2.26
  60. */
  61. #define G_TIME_SPAN_SECOND (G_GINT64_CONSTANT (1000000))
  62. /**
  63. * G_TIME_SPAN_MILLISECOND:
  64. *
  65. * Evaluates to a time span of one millisecond.
  66. *
  67. * Since: 2.26
  68. */
  69. #define G_TIME_SPAN_MILLISECOND (G_GINT64_CONSTANT (1000))
  70. /**
  71. * GTimeSpan:
  72. *
  73. * A value representing an interval of time, in microseconds.
  74. *
  75. * Since: 2.26
  76. */
  77. typedef gint64 GTimeSpan;
  78. /**
  79. * GDateTime:
  80. *
  81. * `GDateTime` is an opaque structure whose members
  82. * cannot be accessed directly.
  83. *
  84. * Since: 2.26
  85. */
  86. typedef struct _GDateTime GDateTime;
  87. GLIB_AVAILABLE_IN_ALL
  88. void g_date_time_unref (GDateTime *datetime);
  89. GLIB_AVAILABLE_IN_ALL
  90. GDateTime * g_date_time_ref (GDateTime *datetime);
  91. GLIB_AVAILABLE_IN_ALL
  92. GDateTime * g_date_time_new_now (GTimeZone *tz);
  93. GLIB_AVAILABLE_IN_ALL
  94. GDateTime * g_date_time_new_now_local (void);
  95. GLIB_AVAILABLE_IN_ALL
  96. GDateTime * g_date_time_new_now_utc (void);
  97. GLIB_AVAILABLE_IN_ALL
  98. GDateTime * g_date_time_new_from_unix_local (gint64 t);
  99. GLIB_AVAILABLE_IN_ALL
  100. GDateTime * g_date_time_new_from_unix_utc (gint64 t);
  101. G_GNUC_BEGIN_IGNORE_DEPRECATIONS
  102. GLIB_DEPRECATED_IN_2_62_FOR(g_date_time_new_from_unix_local)
  103. GDateTime * g_date_time_new_from_timeval_local (const GTimeVal *tv);
  104. GLIB_DEPRECATED_IN_2_62_FOR(g_date_time_new_from_unix_utc)
  105. GDateTime * g_date_time_new_from_timeval_utc (const GTimeVal *tv);
  106. G_GNUC_END_IGNORE_DEPRECATIONS
  107. GLIB_AVAILABLE_IN_2_56
  108. GDateTime * g_date_time_new_from_iso8601 (const gchar *text,
  109. GTimeZone *default_tz);
  110. GLIB_AVAILABLE_IN_ALL
  111. GDateTime * g_date_time_new (GTimeZone *tz,
  112. gint year,
  113. gint month,
  114. gint day,
  115. gint hour,
  116. gint minute,
  117. gdouble seconds);
  118. GLIB_AVAILABLE_IN_ALL
  119. GDateTime * g_date_time_new_local (gint year,
  120. gint month,
  121. gint day,
  122. gint hour,
  123. gint minute,
  124. gdouble seconds);
  125. GLIB_AVAILABLE_IN_ALL
  126. GDateTime * g_date_time_new_utc (gint year,
  127. gint month,
  128. gint day,
  129. gint hour,
  130. gint minute,
  131. gdouble seconds);
  132. GLIB_AVAILABLE_IN_ALL
  133. G_GNUC_WARN_UNUSED_RESULT
  134. GDateTime * g_date_time_add (GDateTime *datetime,
  135. GTimeSpan timespan);
  136. GLIB_AVAILABLE_IN_ALL
  137. G_GNUC_WARN_UNUSED_RESULT
  138. GDateTime * g_date_time_add_years (GDateTime *datetime,
  139. gint years);
  140. GLIB_AVAILABLE_IN_ALL
  141. G_GNUC_WARN_UNUSED_RESULT
  142. GDateTime * g_date_time_add_months (GDateTime *datetime,
  143. gint months);
  144. GLIB_AVAILABLE_IN_ALL
  145. G_GNUC_WARN_UNUSED_RESULT
  146. GDateTime * g_date_time_add_weeks (GDateTime *datetime,
  147. gint weeks);
  148. GLIB_AVAILABLE_IN_ALL
  149. G_GNUC_WARN_UNUSED_RESULT
  150. GDateTime * g_date_time_add_days (GDateTime *datetime,
  151. gint days);
  152. GLIB_AVAILABLE_IN_ALL
  153. G_GNUC_WARN_UNUSED_RESULT
  154. GDateTime * g_date_time_add_hours (GDateTime *datetime,
  155. gint hours);
  156. GLIB_AVAILABLE_IN_ALL
  157. G_GNUC_WARN_UNUSED_RESULT
  158. GDateTime * g_date_time_add_minutes (GDateTime *datetime,
  159. gint minutes);
  160. GLIB_AVAILABLE_IN_ALL
  161. G_GNUC_WARN_UNUSED_RESULT
  162. GDateTime * g_date_time_add_seconds (GDateTime *datetime,
  163. gdouble seconds);
  164. GLIB_AVAILABLE_IN_ALL
  165. G_GNUC_WARN_UNUSED_RESULT
  166. GDateTime * g_date_time_add_full (GDateTime *datetime,
  167. gint years,
  168. gint months,
  169. gint days,
  170. gint hours,
  171. gint minutes,
  172. gdouble seconds);
  173. GLIB_AVAILABLE_IN_ALL
  174. gint g_date_time_compare (gconstpointer dt1,
  175. gconstpointer dt2);
  176. GLIB_AVAILABLE_IN_ALL
  177. GTimeSpan g_date_time_difference (GDateTime *end,
  178. GDateTime *begin);
  179. GLIB_AVAILABLE_IN_ALL
  180. guint g_date_time_hash (gconstpointer datetime);
  181. GLIB_AVAILABLE_IN_ALL
  182. gboolean g_date_time_equal (gconstpointer dt1,
  183. gconstpointer dt2);
  184. GLIB_AVAILABLE_IN_ALL
  185. void g_date_time_get_ymd (GDateTime *datetime,
  186. gint *year,
  187. gint *month,
  188. gint *day);
  189. GLIB_AVAILABLE_IN_ALL
  190. gint g_date_time_get_year (GDateTime *datetime);
  191. GLIB_AVAILABLE_IN_ALL
  192. gint g_date_time_get_month (GDateTime *datetime);
  193. GLIB_AVAILABLE_IN_ALL
  194. gint g_date_time_get_day_of_month (GDateTime *datetime);
  195. GLIB_AVAILABLE_IN_ALL
  196. gint g_date_time_get_week_numbering_year (GDateTime *datetime);
  197. GLIB_AVAILABLE_IN_ALL
  198. gint g_date_time_get_week_of_year (GDateTime *datetime);
  199. GLIB_AVAILABLE_IN_ALL
  200. gint g_date_time_get_day_of_week (GDateTime *datetime);
  201. GLIB_AVAILABLE_IN_ALL
  202. gint g_date_time_get_day_of_year (GDateTime *datetime);
  203. GLIB_AVAILABLE_IN_ALL
  204. gint g_date_time_get_hour (GDateTime *datetime);
  205. GLIB_AVAILABLE_IN_ALL
  206. gint g_date_time_get_minute (GDateTime *datetime);
  207. GLIB_AVAILABLE_IN_ALL
  208. gint g_date_time_get_second (GDateTime *datetime);
  209. GLIB_AVAILABLE_IN_ALL
  210. gint g_date_time_get_microsecond (GDateTime *datetime);
  211. GLIB_AVAILABLE_IN_ALL
  212. gdouble g_date_time_get_seconds (GDateTime *datetime);
  213. GLIB_AVAILABLE_IN_ALL
  214. gint64 g_date_time_to_unix (GDateTime *datetime);
  215. G_GNUC_BEGIN_IGNORE_DEPRECATIONS
  216. GLIB_DEPRECATED_IN_2_62_FOR(g_date_time_to_unix)
  217. gboolean g_date_time_to_timeval (GDateTime *datetime,
  218. GTimeVal *tv);
  219. G_GNUC_END_IGNORE_DEPRECATIONS
  220. GLIB_AVAILABLE_IN_ALL
  221. GTimeSpan g_date_time_get_utc_offset (GDateTime *datetime);
  222. GLIB_AVAILABLE_IN_2_58
  223. GTimeZone * g_date_time_get_timezone (GDateTime *datetime);
  224. GLIB_AVAILABLE_IN_ALL
  225. const gchar * g_date_time_get_timezone_abbreviation (GDateTime *datetime);
  226. GLIB_AVAILABLE_IN_ALL
  227. gboolean g_date_time_is_daylight_savings (GDateTime *datetime);
  228. GLIB_AVAILABLE_IN_ALL
  229. GDateTime * g_date_time_to_timezone (GDateTime *datetime,
  230. GTimeZone *tz);
  231. GLIB_AVAILABLE_IN_ALL
  232. GDateTime * g_date_time_to_local (GDateTime *datetime);
  233. GLIB_AVAILABLE_IN_ALL
  234. GDateTime * g_date_time_to_utc (GDateTime *datetime);
  235. GLIB_AVAILABLE_IN_ALL
  236. gchar * g_date_time_format (GDateTime *datetime,
  237. const gchar *format) G_GNUC_MALLOC;
  238. GLIB_AVAILABLE_IN_2_62
  239. gchar * g_date_time_format_iso8601 (GDateTime *datetime) G_GNUC_MALLOC;
  240. G_END_DECLS
  241. #endif /* __G_DATE_TIME_H__ */