[glib] datetime: Re-use add_dmy()
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] datetime: Re-use add_dmy()
- Date: Thu, 26 Aug 2010 12:03:56 +0000 (UTC)
commit 9a61fb2c640708070a32c18bd06ae94ee71c925f
Author: Emmanuele Bassi <ebassi linux intel com>
Date: Thu Aug 26 12:58:19 2010 +0100
datetime: Re-use add_dmy()
Avoid code duplication.
glib/gdatetime.c | 55 +++++------------------------------------------
glib/tests/gdatetime.c | 5 +++-
2 files changed, 10 insertions(+), 50 deletions(-)
---
diff --git a/glib/gdatetime.c b/glib/gdatetime.c
index d03ac0c..b6cb09b 100644
--- a/glib/gdatetime.c
+++ b/glib/gdatetime.c
@@ -792,22 +792,11 @@ g_date_time_add_years (const GDateTime *datetime,
gint years)
{
GDateTime *dt;
- gint day;
g_return_val_if_fail (datetime != NULL, NULL);
- day = g_date_time_get_day_of_month (datetime);
- if (g_date_time_is_leap_year (datetime) &&
- g_date_time_get_month (datetime) == 2)
- {
- if (day == 29)
- day--;
- }
-
- dt = g_date_time_new_from_date (g_date_time_get_year (datetime) + years,
- g_date_time_get_month (datetime),
- day);
- dt->usec = datetime->usec;
+ dt = g_date_time_copy (datetime);
+ g_date_time_add_dmy (dt, years, 0, 0);
return dt;
}
@@ -829,44 +818,12 @@ GDateTime*
g_date_time_add_months (const GDateTime *datetime,
gint months)
{
- GDateTime *dt;
- gint year,
- month,
- day,
- i,
- a;
- const guint16 *days;
+ GDateTime *dt;
g_return_val_if_fail (datetime != NULL, NULL);
- g_return_val_if_fail (months != 0, NULL);
-
- month = g_date_time_get_month (datetime);
- year = g_date_time_get_year (datetime);
- a = months > 0 ? 1 : -1;
- for (i = 0; i < ABS (months); i++)
- {
- month += a;
- if (month < 1)
- {
- year--;
- month = 12;
- }
- else if (month > 12)
- {
- year++;
- month = 1;
- }
- }
-
- day = g_date_time_get_day_of_month (datetime);
- days = days_in_months [GREGORIAN_LEAP (year) ? 1 : 0];
-
- if (days[month] < day)
- day = days[month];
-
- dt = g_date_time_new_from_date (year, month, day);
- dt->usec = datetime->usec;
+ dt = g_date_time_copy (datetime);
+ g_date_time_add_dmy (dt, 0, months, 0);
return dt;
}
@@ -915,7 +872,7 @@ g_date_time_add_days (const GDateTime *datetime,
g_return_val_if_fail (datetime != NULL, NULL);
dt = g_date_time_copy (datetime);
- g_date_time_add_days_internal (dt, days);
+ g_date_time_add_dmy (dt, 0, 0, days);
return dt;
}
diff --git a/glib/tests/gdatetime.c b/glib/tests/gdatetime.c
index f0a0e55..828b537 100644
--- a/glib/tests/gdatetime.c
+++ b/glib/tests/gdatetime.c
@@ -74,12 +74,15 @@ test_GDateTime_now (void)
get_localtime_tm (time (NULL), &tm);
dt = g_date_time_new_now ();
+
g_assert_cmpint (g_date_time_get_year (dt), ==, 1900 + tm.tm_year);
g_assert_cmpint (g_date_time_get_month (dt), ==, 1 + tm.tm_mon);
g_assert_cmpint (g_date_time_get_day_of_month (dt), ==, tm.tm_mday);
g_assert_cmpint (g_date_time_get_hour (dt), ==, tm.tm_hour);
g_assert_cmpint (g_date_time_get_minute (dt), ==, tm.tm_min);
- g_assert_cmpint (g_date_time_get_second (dt), ==, tm.tm_sec);
+ /* XXX we need some fuzzyness here */
+ g_assert_cmpint (g_date_time_get_second (dt), >=, tm.tm_sec);
+
g_date_time_unref (dt);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]