Index: apps/lang/english.lang
===================================================================
--- apps/lang/english.lang	(revision 29827)
+++ apps/lang/english.lang	(working copy)
@@ -4024,6 +4024,74 @@
   </voice>
 </phrase>
 <phrase>
+  id: LANG_DATEFORMAT
+  desc: select the format of date in status bar
+  user: core
+  <source>
+    *: none
+    rtc: "Date Format"
+  </source>
+  <dest>
+    *: none
+    rtc: "Date Format"
+  </dest>
+  <voice>
+    *: none
+    rtc: "Date Format"
+  </voice>
+</phrase>
+<phrase>
+  id: LANG_DATE_YMD
+  desc: option for year month day date
+  user: core
+  <source>
+    *: none
+    rtc: "Year Month Day"
+  </source>
+  <dest>
+    *: none
+    rtc: "Year Month Day"
+  </dest>
+  <voice>
+    *: none
+    rtc: "Year Month Day"
+  </voice>
+</phrase>
+<phrase>
+  id: LANG_DATE_DMY
+  desc: option for day month year date
+  user: core
+  <source>
+    *: none
+    rtc: "Day Month Year"
+  </source>
+  <dest>
+    *: none
+    rtc: "Day Month Year"
+  </dest>
+  <voice>
+    *: none
+    rtc: "Day Month Year"
+  </voice>
+</phrase>
+<phrase>
+  id: LANG_DATE_MDY
+  desc: option for month day year date
+  user: core
+  <source>
+    *: none
+    rtc: "Month Day Year"
+  </source>
+  <dest>
+    *: none
+    rtc: "Month Day Year"
+  </dest>
+  <voice>
+    *: none
+    rtc: "Month Day Year"
+  </voice>
+</phrase>
+<phrase>
   id: LANG_TIME_SET_BUTTON
   desc: used in set_time()
   user: core
Index: apps/gui/skin_engine/skin_tokens.c
===================================================================
--- apps/gui/skin_engine/skin_tokens.c	(revision 29827)
+++ apps/gui/skin_engine/skin_tokens.c	(working copy)
@@ -1103,6 +1103,12 @@
             snprintf(buf, buf_size, "%d", global_settings.timeformat);
             return buf;
 
+        case SKIN_TOKEN_RTC_DATE_CFG:
+            if (intval)
+                *intval = global_settings.dateformat + 1;
+            snprintf(buf, buf_size, "%d", global_settings.dateformat);
+            return buf;
+
         case SKIN_TOKEN_RTC_DAY_OF_MONTH:
             /* d: day of month (01..31) */
             snprintf(buf, buf_size, "%02d", tm->tm_mday);
Index: apps/settings.h
===================================================================
--- apps/settings.h	(revision 29827)
+++ apps/settings.h	(working copy)
@@ -495,6 +495,7 @@
 
 #if CONFIG_RTC
     int timeformat;    /* time format: 0=24 hour clock, 1=12 hour clock */
+    int dateformat;    /* date format: 0=Y-M-D, 1=D-M-Y, 2=M-D-Y */
 #endif
 
 #ifdef HAVE_DISK_STORAGE
Index: apps/menus/time_menu.c
===================================================================
--- apps/menus/time_menu.c	(revision 29827)
+++ apps/menus/time_menu.c	(working copy)
@@ -80,6 +80,7 @@
 MENUITEM_FUNCTION(time_set, 0, ID2P(LANG_SET_TIME), 
                   timedate_set, NULL, NULL, Icon_NOICON);
 MENUITEM_SETTING(timeformat, &global_settings.timeformat, NULL);
+MENUITEM_SETTING(dateformat, &global_settings.dateformat, NULL);
 
 /* in main_menu.c */
 extern const struct menu_item_ex sleep_timer_call;
@@ -181,10 +182,27 @@
                             tm->tm_sec, 
                         global_settings.timeformat == 0 ? "" :
                                 tm->tm_hour>11 ? " P" : " A");
-        snprintf(date, sizeof(date), "%s %d %d", 
-                str(LANG_MONTH_JANUARY + tm->tm_mon),
+        switch (global_settings.dateformat)
+        {
+            case 0:
+                snprintf(date, sizeof(date), "%d %s %d",
+                    tm->tm_year+1900,
+                    str(LANG_MONTH_JANUARY + tm->tm_mon),
+                    tm->tm_mday);
+                break;
+            case 1:
+                snprintf(date, sizeof(date), "%d %s %d",
                     tm->tm_mday,
+                    str(LANG_MONTH_JANUARY + tm->tm_mon),
                     tm->tm_year+1900);
+                break;
+            case 2:
+                snprintf(date, sizeof(date), "%s %d %d",
+                    str(LANG_MONTH_JANUARY + tm->tm_mon),
+                    tm->tm_mday,
+                    tm->tm_year+1900);
+                break;
+        }
     }
     else
     {
@@ -246,7 +264,7 @@
           &alarm_wake_up_screen,
 #endif
 #endif
-          &timeformat);
+          &timeformat, &dateformat);
 
 int time_screen(void* ignored)
 {
Index: apps/talk.c
===================================================================
--- apps/talk.c	(revision 29827)
+++ apps/talk.c	(working copy)
@@ -1215,9 +1215,24 @@
 #if CONFIG_RTC
 void talk_date(const struct tm *tm, bool enqueue)
 {
-    talk_id(LANG_MONTH_JANUARY + tm->tm_mon, enqueue);
-    talk_number(tm->tm_mday, true);
-    talk_number(1900 + tm->tm_year, true);
+    switch (global_settings.dateformat)
+    {
+    case 0:
+        talk_number(1900 + tm->tm_year, true);
+        talk_id(LANG_MONTH_JANUARY + tm->tm_mon, enqueue);
+        talk_number(tm->tm_mday, true);
+        break;
+    case 1:
+        talk_number(tm->tm_mday, true);
+        talk_id(LANG_MONTH_JANUARY + tm->tm_mon, enqueue);
+        talk_number(1900 + tm->tm_year, true);
+        break;
+    case 2:
+        talk_id(LANG_MONTH_JANUARY + tm->tm_mon, enqueue);
+        talk_number(tm->tm_mday, true);
+        talk_number(1900 + tm->tm_year, true);
+        break;
+    }
 }
 
 void talk_time(const struct tm *tm, bool enqueue)
Index: apps/settings_list.c
===================================================================
--- apps/settings_list.c	(revision 29827)
+++ apps/settings_list.c	(working copy)
@@ -748,6 +748,9 @@
     CHOICE_SETTING(0, timeformat, LANG_TIMEFORMAT, 0,
         "time format", "24hour,12hour", NULL, 2,
         ID2P(LANG_24_HOUR_CLOCK), ID2P(LANG_12_HOUR_CLOCK)),
+    CHOICE_SETTING(0, dateformat, LANG_DATEFORMAT, 0,
+            "date format", "YMD,DMY,MDY", NULL, 3,
+            ID2P(LANG_DATE_YMD), ID2P(LANG_DATE_DMY), ID2P(LANG_DATE_MDY)),
 #endif
 #endif /* HAVE_LCD_BITMAP */
     OFFON_SETTING(0,show_icons, LANG_SHOW_ICONS ,true,"show icons", NULL),
Index: lib/skin_parser/tag_table.c
===================================================================
--- lib/skin_parser/tag_table.c	(revision 29827)
+++ lib/skin_parser/tag_table.c	(working copy)
@@ -48,6 +48,7 @@
     { SKIN_TOKEN_RTC_DAY_OF_MONTH,      "cd", "", SKIN_RTC_REFRESH },
     { SKIN_TOKEN_RTC_DAY_OF_MONTH_BLANK_PADDED, "ce", "", SKIN_RTC_REFRESH },
     { SKIN_TOKEN_RTC_12HOUR_CFG,        "cf", "", SKIN_RTC_REFRESH },
+    { SKIN_TOKEN_RTC_DATE_CFG,          "cF", "", SKIN_RTC_REFRESH },
     { SKIN_TOKEN_RTC_HOUR_24_ZERO_PADDED, "cH", "", SKIN_RTC_REFRESH },
     { SKIN_TOKEN_RTC_HOUR_24,           "ck", "", SKIN_RTC_REFRESH },
     { SKIN_TOKEN_RTC_HOUR_12_ZERO_PADDED, "cI", "", SKIN_RTC_REFRESH },
Index: lib/skin_parser/tag_table.h
===================================================================
--- lib/skin_parser/tag_table.h	(revision 29827)
+++ lib/skin_parser/tag_table.h	(working copy)
@@ -115,6 +115,7 @@
     SKIN_TOKEN_RTC_DAY_OF_MONTH,
     SKIN_TOKEN_RTC_DAY_OF_MONTH_BLANK_PADDED,
     SKIN_TOKEN_RTC_12HOUR_CFG,
+    SKIN_TOKEN_RTC_DATE_CFG,
     SKIN_TOKEN_RTC_HOUR_24_ZERO_PADDED,
     SKIN_TOKEN_RTC_HOUR_24,
     SKIN_TOKEN_RTC_HOUR_12_ZERO_PADDED,
