diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp
index 18ae6107e7d74e8aa1d6106c03291499b9e122e4..c7fc45f61ee68347beffcb6cf3397d73ec3d419f 100644
--- a/indra/newview/lldateutil.cpp
+++ b/indra/newview/lldateutil.cpp
@@ -27,10 +27,16 @@
 
 #include "lldateutil.h"
 
+#include <boost/date_time/gregorian/gregorian.hpp>
+#include <boost/date_time/posix_time/ptime.hpp>
+
 // Linden libraries
 #include "lltrans.h"
 #include "llui.h"
 
+using namespace boost::gregorian;
+using namespace boost::posix_time;
+
 static S32 DAYS_PER_MONTH_NOLEAP[] =
 	{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
 static S32 DAYS_PER_MONTH_LEAP[] =
@@ -186,3 +192,24 @@ std::string LLDateUtil::ageFromDate(const std::string& date_string)
 //{
 //	return ageFromDateISO(date_string, LLDate::now());
 //}
+
+S32 LLDateUtil::secondsSinceEpochFromString(const std::string& format, const std::string& str)
+{
+	date_input_facet *facet = new date_input_facet(format);
+
+	std::stringstream ss;
+	ss << str;
+	ss.imbue(std::locale(ss.getloc(), facet));
+
+	date d;
+	ss >> d;
+
+	ptime time_t_date(d);
+	ptime time_t_epoch(date(1970,1,1));
+
+	// We assume that the date defined by str is in UTC, so the difference
+	// is calculated with no time zone corrections.
+	time_duration diff = time_t_date - time_t_epoch;
+
+	return diff.total_seconds();
+}
diff --git a/indra/newview/lldateutil.h b/indra/newview/lldateutil.h
index 2843a357c9a245efabc786c4003caedc6e344da0..f027d360f7aadd1cc149f095e4d196f9d453679e 100644
--- a/indra/newview/lldateutil.h
+++ b/indra/newview/lldateutil.h
@@ -69,6 +69,20 @@ namespace LLDateUtil
 	//std::string ageFromDateISO(const std::string& date_string);
 
 	//std::string ageFromDate(S32 born_year, S32 born_month, S32 born_day, const LLDate& now);
+
+	/**
+	 * Convert a string of a specified date format into seconds since the Epoch.
+	 *
+	 * Many of the format flags are those used by strftime(...), but not all.
+	 * For the full list of supported time format specifiers
+	 * see http://www.boost.org/doc/libs/1_47_0/doc/html/date_time/date_time_io.html#date_time.format_flags
+	 *
+	 * @param format Format characters string. Example: "%A %b %d, %Y"
+	 * @param str    Date string containing the time in specified format.
+	 *
+	 * @return Number of seconds since 01/01/1970 UTC.
+	 */
+	S32 secondsSinceEpochFromString(const std::string& format, const std::string& str);
 }
 
 #endif
diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp
index 8d8d9bc1c4452247dec00b9e3dcae314beff3a7a..eddd6e554dd0fe04fd230ea7fb415f8970427af0 100644
--- a/indra/newview/llpanelgrouplandmoney.cpp
+++ b/indra/newview/llpanelgrouplandmoney.cpp
@@ -35,6 +35,7 @@
 #include "llqueryflags.h"
 
 #include "llagent.h"
+#include "lldateutil.h"
 #include "lliconctrl.h"
 #include "llfloaterreg.h"
 #include "lllineeditor.h"
@@ -1056,6 +1057,14 @@ void LLGroupMoneyDetailsTabEventHandler::processReply(LLMessageSystem* msg,
 	msg->getS32Fast(_PREHASH_MoneyData, _PREHASH_CurrentInterval, current_interval );
 	msg->getStringFast(_PREHASH_MoneyData, _PREHASH_StartDate, start_date);
 
+	std::string time_str = LLTrans::getString("GroupMoneyDate");
+	LLSD substitution;
+
+	// We don't do time zone corrections of the calculated number of seconds
+	// because we don't have a full time stamp, only a date.
+	substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%A %b %d, %Y", start_date);
+	LLStringUtil::format (time_str, substitution);
+
 	if ( interval_days != mImplementationp->mIntervalLength || 
 		 current_interval != mImplementationp->mCurrentInterval )
 	{
@@ -1064,7 +1073,7 @@ void LLGroupMoneyDetailsTabEventHandler::processReply(LLMessageSystem* msg,
 		return;
 	}
 
-	std::string text = start_date;
+	std::string text = time_str;
 	text.append("\n\n");
 
 	S32 total_amount = 0;
@@ -1203,7 +1212,15 @@ void LLGroupMoneySalesTabEventHandler::processReply(LLMessageSystem* msg,
 	// Start with the date.
 	if (text == mImplementationp->mLoadingText)
 	{
-		text = start_date + "\n\n";
+		std::string time_str = LLTrans::getString("GroupMoneyDate");
+		LLSD substitution;
+
+		// We don't do time zone corrections of the calculated number of seconds
+		// because we don't have a full time stamp, only a date.
+		substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%A %b %d, %Y", start_date);
+		LLStringUtil::format (time_str, substitution);
+
+		text = time_str + "\n\n";
 	}
 
 	S32 transactions = msg->getNumberOfBlocksFast(_PREHASH_HistoryData);
@@ -1408,12 +1425,26 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg,
 	}
 
 	text.append(LLTrans::getString("SummaryForTheWeek"));
-	text.append(start_date);
+
+	std::string date_format_str = LLTrans::getString("GroupPlanningDate");
+	std::string time_str = date_format_str;
+	LLSD substitution;
+	// We don't do time zone corrections of the calculated number of seconds
+	// because we don't have a full time stamp, only a date.
+	substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%m/%d/%Y", start_date);
+	LLStringUtil::format (time_str, substitution);
+
+	text.append(time_str);
 
 	if (current_interval == 0)
 	{
 		text.append(LLTrans::getString("NextStipendDay"));
-		text.append(next_stipend_date);
+
+		time_str = date_format_str;
+		substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%m/%d/%Y", next_stipend_date);
+		LLStringUtil::format (time_str, substitution);
+
+		text.append(time_str);
 		text.append("\n\n");
 		text.append(llformat("%-24sL$%6d\n", LLTrans::getString("GroupMoneyBalance").c_str(), balance ));
 		text.append(1, '\n');
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index c1c1151eb97a302f6e8cf447d916ac4c93eac399..ee6317f367b676c7e85f06d7870398bae092671f 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2238,6 +2238,7 @@ Returns a string with the requested data about the region
 	<string name="Unknown">(Unknown)</string>
 	<string name="SummaryForTheWeek"    value="Summary for this week, beginning on " />
 	<string name="NextStipendDay"       value="The next stipend day is " />
+	<string name="GroupPlanningDate">[mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]</string>
 	<string name="GroupIndividualShare" value="                      Group       Individual Share" />
 	<string name="GroupColumn"          value="                      Group" />
 	<string name="Balance">Balance</string>
@@ -2394,6 +2395,7 @@ Returns a string with the requested data about the region
 	<string name="GroupMoneyBalance">Balance</string>
 	<string name="GroupMoneyCredits">Credits</string>
 	<string name="GroupMoneyDebits">Debits</string>
+	<string name="GroupMoneyDate">[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]</string>
 
 	<!-- viewer object -->
 	<string name="ViewerObjectContents">Contents</string>