167 Commits

Author SHA1 Message Date
Ryan Lortie
9860c83ad6 g_date_time_format: add standards notes to the doc
Explicitly mention C99's strftime() in the documentation for
g_date_time_format() as the one that we aim for compatibility with.
Specifically list the formats we do not support as well as the extra
ones that we borrow from glibc.
2011-09-02 21:17:50 -04:00
Ryan Lortie
1b04f0d973 g_date_time_format: rip out non-working %W format
Our implementation of %W is incorrect.  Nobody should want to use this
format anyway and the implementation is non-trivial, so rip it out
rather than fixing it.

Remove the testcase for %W as well.
2011-09-02 21:05:40 -04:00
Ryan Lortie
b8c2fd7e05 g_date_time_format: clarify documentation
Add some clarification to the documentation for %g, %G, %V and %u
formats (which all concern themselves with ISO 8601 week dates).
2011-09-02 21:05:40 -04:00
Ryan Lortie
46ce790772 g_date_time_format: support %D
%D represents the date in mm/dd/yy format.

https://bugzilla.gnome.org/show_bug.cgi?id=658061
2011-09-02 21:05:40 -04:00
Ryan Lortie
4b35f12552 g_date_time_format: small fixups
Add missing 'break;' from the case: block for %c.  Reorder the cases so
that %F comes before %g/%G and %n comes in its correct alphabetical
order.
2011-09-02 21:05:40 -04:00
Ryan Lortie
65fe8b73c5 g_date_time_format: fix padding for some formats
%e is supposed to be space-padded and %W is supposed to be 0-padded

Adjust the testcase accordingly since it expects the wrong behaviour.
2011-09-02 21:05:23 -04:00
Ryan Lortie
a1b665c111 g_date_time_format: support %g and %G
These are the 2-digit and 4-digit ISO week-numbering years.

https://bugzilla.gnome.org/show_bug.cgi?id=658061
2011-09-02 18:10:54 -04:00
Ryan Lortie
034952ead6 g_date_time_format: drop %N format
%N is not specified in any standards document, but we use it to display
the number of microseconds.

The fact that our our current implementation of it is nearly useless
(since it does not zero-pad) coupled with the high chance that a future
version of the C standard may specify it with another meaning means that
we should drop it.

https://bugzilla.gnome.org/show_bug.cgi?id=658061
2011-09-02 18:10:38 -04:00
Javier Jardón
f421f0b883 g_date_time_format: support %w
%w represents the day of the week as a decimal, range 0 to 6,
Sunday being 0.

https://bugzilla.gnome.org/show_bug.cgi?id=658061
2011-09-02 18:07:56 -04:00
Javier Jardón
e975b5b75c g_date_time_format: support %C
%C represents the century number (year/100) as a 2-digit integer

https://bugzilla.gnome.org/show_bug.cgi?id=658061
2011-09-02 18:07:51 -04:00
Javier Jardón
6f80dc6042 g_date_time_format: support %c
%c represents the preferred  date  and  time  representation  for the
current locale.

https://bugzilla.gnome.org/show_bug.cgi?id=658061
2011-09-02 18:07:19 -04:00
Javier Jardón
b42d15490b g_date_time_format: support %V
%V represents the  ISO 8601  week  number of the current year as a
decimal number, range 01 to 53, where week 1 is the  first  week
that  has  at least 4 days in the new year

https://bugzilla.gnome.org/show_bug.cgi?id=658061
2011-09-02 18:05:45 -04:00
Ryan Lortie
ab8938c64d Revert "gdatetime: Add g_date_time_source_new()"
This reverts three commits:

 - 1feb752996b404965a2f58b29a569a273d4374fa
 - 5763c631473539746646697e6a775f6eacaa08e2
 - 21a538934091e1449e0479daf066fa20df2dc2ef

https://bugzilla.gnome.org/show_bug.cgi?id=655129
2011-08-31 12:56:28 -04:00
Colin Walters
21a5389340 gdatetime: Tweak g_date_time_source_new() documentation 2011-08-29 15:06:14 -04:00
Matthias Clasen
1b28408b8b Spelling fixes
Spelling fixes in comments and docs, provided by
Kjartan Maraas in bug 657336.
2011-08-29 14:49:32 -04:00
Colin Walters
5763c63147 Add Linux timerfd_create() backend for g_date_time_source_new()
This makes the source efficient on Linux.

Tested on Fedora 15 x86_64 + updates, kernel-2.6.40-4.fc15.x86_64
Also tested fallback code for unsupported flag TFD_TIMER_CANCEL_ON_SET
on kernel 2.6.38.

https://bugzilla.gnome.org/show_bug.cgi?id=655129
2011-08-29 10:24:37 -04:00
Colin Walters
1feb752996 gdatetime: Add g_date_time_source_new()
Several different codebases in GNOME want to implement wall clocks.
While we could pretty easily share a private library, it's not a
substantial amount of code, and GLib already has a lot of the
necessary system-specific detection and handling infrastructure.

Note this initial implementation just wakes up once a second in the
cancel_on_set case; we'll add the Linux-specific handling in a
subsequent commit.

https://bugzilla.gnome.org/show_bug.cgi?id=655129
2011-08-29 10:24:08 -04:00
Matthias Clasen
d617091d80 gdatetime: Don't include langinfo.h unconditionally
It doesn't exist on Windows.

https://bugzilla.gnome.org/show_bug.cgi?id=657083
2011-08-22 22:02:03 -04:00
Matthias Clasen
527dc86722 GDateTime: use nl_langinfo() when available
This makes g_date_time_format() react to LC_TIME, which is
what people expect.

Translators: this change means that the GDateTime strings
are only used when the C library does not already provide
suitable translated strings for these (month names, etc).
2011-08-21 23:48:07 -04:00
Matthias Clasen
040dcc8a78 GDateTime: cosmetics
Shuffle things around a bit, to move locale-dependent
things together.
2011-08-21 23:36:31 -04:00
Matthias Clasen
6fae33b10a GDateTime: cosmetics
Don't hide the recursion in g_date_time_format() behind
a macro, make it explicit.
2011-08-21 23:32:28 -04:00
Matthias Clasen
2282036b5d GDateTime: don't use separate strings for upper/lowercase am/pm
We can just as well change the case ourselves.
2011-08-21 20:45:57 -04:00
Matthias Clasen
414c8ce532 g_date_time_format: support %T
strftime supports it, and there is no reason not to do the same.
2011-08-21 19:51:45 -04:00
Matthias Clasen
75f7eef9cd Fix doc typos
Now with fewer broken links...
2011-06-04 14:43:52 -04:00
Matthias Clasen
807d41b89b Documentation fixups 2011-05-29 00:05:07 -04:00
Colin Walters
c026cf56a1 gdatetime: Quiet GCC warning about possibly-uninitialized 2011-05-11 13:19:05 -04:00
Matthias Clasen
e15ecab048 Expand the g_date_time_format documentation
Mention strftime, and explain supported modifiers.
2011-05-05 14:57:09 -04:00
Matthias Clasen
d23c33a04b GDateTime: enhance g_date_time_format()
Make g_date_time_format() support some useful format modifiers from
strftime(). This commit adds support for the POSIX 'O' modifier
(alternative digits), as well as the -/_/0 padding modifiers, which
are a GNU strftime() extension.
https://bugzilla.gnome.org/show_bug.cgi?id=648678
2011-05-05 14:57:09 -04:00
David Schleef
0dc5d45692 Fix %z in g_date_time_format()
https://bugzilla.gnome.org/show_bug.cgi?id=642935
2011-04-27 02:36:12 -04:00
Benjamin Otte
562f29afdc doc: Fix typo in previous commit
Yuck. I blame it on the weekend.
2011-02-12 18:05:54 +01:00
Benjamin Otte
17eea8fa60 docs: Fix return value for g_datetime_compare()
Previous code confused dt1 and dt2. The new formulation is stolen from
man strcmp() and g_strcmp0().
2011-02-12 17:56:34 +01:00
Matthias Clasen
8d572f5d22 g_date_time_format: drop an unused variable 2011-02-08 07:35:54 -05:00
Ray Strode
e8120dc4ce datetime: Show 12 instead of 0 for 12h hour format
The 12h mode hour format is computed by taking the
24h mode hour format modulo 12.

The conversion results in 12 noon getting erroneously
converted to 0.

This commit makes noon get the same special handling
as midnight.
2011-01-17 14:31:34 -05:00
Bastien Nocera
3e61cb2fcc Fix typo in API docs for GDateTime
s/monty/month/
2010-12-02 16:59:22 +00:00
Chun-wei Fan
9806040455 Added and Moved checks for includes
Moved checks for G_OS_WIN32 after GLib header includes and added other checks
required for Windows/MSVC builds
2010-11-09 09:53:12 +08:00
Matthias Clasen
d2612ad955 Fix a doc typo 2010-10-31 23:13:36 -04:00
Christian Persch
ab02965c50 Use G_GINT64_CONSTANT here
Bug #631482.
2010-10-30 21:40:28 -04:00
Ryan Lortie
fff6814973 Bug 630077 - GDateTime week number support
Fully implement support for ISO 8601 week dates in GDateTime and
document that this is the case.

Add an exhaustive test case to ensure correctness.
2010-10-01 11:20:55 -04:00
Ryan Lortie
1a0dbff236 clean up g_date_time_get_week_day()
No functionality changes here.

Vastly simplify the algorithm for calculating the day of the week.

Fix the documentation (which is incorrectly stating that 1 means
Sunday) and clarify that the number we return is in line with ISO 8601
week day numbering.
2010-09-26 18:53:28 -04:00
Ryan Lortie
6b0e31ce48 Clean-up/tweaking of GDateTime and GTimeZone 2010-09-17 11:40:10 -04:00
Emmanuele Bassi
909289c763 datetime: Fix hashing
Convert to the epoch, just like we do when checking for equality, so
that timezones are correctly handled.

https://bugzilla.gnome.org/show_bug.cgi?id=50076
2010-09-17 11:40:10 -04:00
Emmanuele Bassi
3e9fb52214 datetime: Rename g_date_time_printf() to g_date_time_format()
The function does not use any printf() modifiers, so using printf() is a
misnomer.

Prior art: strftime, g_ascii_formatd

https://bugzilla.gnome.org/show_bug.cgi?id=50076
2010-09-17 11:40:10 -04:00
Emmanuele Bassi
4bac6613cf datetime: Update modifiers for DST changes
If a DateTime gets modified to cross the DST state from its previous
state then we want to update the DateTime to compensate for the new
offset.

In other words, if we have a DateTime defined as:

  DateTime({ y: 2009, m: 8, d: 15, hh: 3, mm: 0, tz: 'Europe/London' });

and we add six months to it, the hour must be changed to 60 minutes
behind, as the DST comes into effect.

https://bugzilla.gnome.org/show_bug.cgi?id=50076
2010-09-17 11:40:10 -04:00
Emmanuele Bassi
0746f74036 datetime: Allow setting fractionary seconds in new_full()
Otherwise we'll have to do:

  dt = g_date_time_new_full (Y, M, D, h, m, s, tz);
  tmp = g_date_time_add_usec (dt, usec);
  g_date_time_unref (dt);
  dt = tmp;

With its additional allocations.

https://bugzilla.gnome.org/show_bug.cgi?id=50076
2010-09-17 11:40:10 -04:00
Emmanuele Bassi
67f1e52ce2 datetime: Rework time zone support in constructors
Timezone handling is complicated. Really complicated.

In order to simplify it a little bit, we need to expose the GTimeZone
structure.

First of all, we allow creating time zone information directly from the
offset and the DST state, and then pass it to the g_date_time_new_full()
constructor. We also need to clean up the mess that is UTC-vs.-localtime
for the other constructors.

We also allow creating a GTimeZone from the Olson zoneinfo database
names; a time zone created like this will be "floating": it will just
reference the zoneinfo file - which are mmap()'ed, kept in a cache and
refcounted. Once the GTimeZone has been associated with a GDateTime, it
will be "anchored" to it: the offset will be resolved, as well as the
DST state.

https://bugzilla.gnome.org/show_bug.cgi?id=50076
2010-09-17 11:40:10 -04:00
Matthias Clasen
0ecfc6e1f9 Better msgctxt for month and weekday names
The current msgctxt string 'GDateTime" lead to the unability to
differentiate between the full and abbreviated name for May.
Therefore, the msgctxt strings have been changed to
  'full month name'
  'abbreviated month name'
  'full weekday name'
  'abbreviated weekday name'
This is a string change, but all translations have been updated
using an sed script.

Bug 629429
2010-09-13 12:27:04 -04:00
Emmanuele Bassi
2aa135ee3d Whitespace fixes 2010-09-06 12:26:40 +01:00
Damien Lespiau
43098d0038 datetime: Rename shadowing variables
timezone and tzname shadow variables declared in time.h. Let's rename
them to time_zone and tz_name then.

https://bugzilla.gnome.org/show_bug.cgi?id=628839
2010-09-06 11:51:11 +01:00
Thiago Santos
875ad12345 gdatetime: Use proleptic gregorian
Use Proleptic Gregorian calendar instead of the Julian calendar
as the internal representation.

https://bugzilla.gnome.org/show_bug.cgi?id=50076

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
2010-09-06 11:50:30 +01:00
Christian Hergert
6bb89501cf datetime: use g_utf8_next_char() to walk utf8 string
Previously, the format string was iterated many times by
walking to the given offset in the string repeatedly.
This patch instead walks the string using g_utf8_next_char().

Additionally, the character for lookups was a char and could
loose content.  This uses gunichar instead.

https://bugzilla.gnome.org/show_bug.cgi?id=50076
2010-09-06 11:50:30 +01:00