diff --git a/glib/gdatetime.c b/glib/gdatetime.c
index 024070d0e..75f83389c 100644
--- a/glib/gdatetime.c
+++ b/glib/gdatetime.c
@@ -172,6 +172,7 @@ static const guint16 days_in_year[2][13] =
nl_langinfo (AM_STR) : \
nl_langinfo (PM_STR))
+#define PREFERRED_DATE_TIME_FMT nl_langinfo (D_T_FMT)
#define PREFERRED_DATE_FMT nl_langinfo (D_FMT)
#define PREFERRED_TIME_FMT nl_langinfo (T_FMT)
@@ -200,6 +201,9 @@ static const gint month_item[2][12] =
/* Translators: 'after midday' indicator */ \
: C_("GDateTime", "pm"))
+/* Translators: this is the preferred format for expressing the date and the time */
+#define PREFERRED_DATE_TIME_FMT C_("GDateTime", "%a %b %e %H:%M:%S %Y")
+
/* Translators: this is the preferred format for expressing the date */
#define PREFERRED_DATE_FMT C_("GDateTime", "%m/%d/%y")
@@ -2148,6 +2152,11 @@ get_numeric_format (gchar *fmt,
* the full month name according to the current locale
*
*
+ * %%c:
+ *
+ * the preferred date and time representation for the current locale
+ *
+ *
* %%d:
*
* the day of the month as a decimal number (range 01 to 31)
@@ -2406,6 +2415,13 @@ g_date_time_format (GDateTime *datetime,
case 'B':
g_string_append (outstr, MONTH_FULL (datetime));
break;
+ case 'c':
+ {
+ tmp = g_date_time_format (datetime, PREFERRED_DATE_TIME_FMT);
+ g_string_append (outstr, tmp);
+ g_free (tmp);
+ }
+ break;
case 'd':
get_numeric_format (fmt, sizeof(fmt), alt_digits, pad_set ? pad : '0', 2);
g_string_append_printf (outstr, fmt, g_date_time_get_day_of_month (datetime));