diff --git a/indra/newview/llavatarpropertiesprocessor.cpp b/indra/newview/llavatarpropertiesprocessor.cpp
index 33e5046f5062b5fa90a99dc510a9ae2f226d9a96..c7e788f345a69084942addcb0414bcfb3c51e20c 100644
--- a/indra/newview/llavatarpropertiesprocessor.cpp
+++ b/indra/newview/llavatarpropertiesprocessor.cpp
@@ -37,6 +37,7 @@
 // Viewer includes
 #include "llagent.h"
 #include "llagentpicksinfo.h"
+#include "lldateutil.h"
 #include "llviewergenericmessage.h"
 
 // Linden library includes
@@ -246,6 +247,7 @@ std::string LLAvatarPropertiesProcessor::paymentInfo(const LLAvatarData* avatar_
 void LLAvatarPropertiesProcessor::processAvatarPropertiesReply(LLMessageSystem* msg, void**)
 {
 	LLAvatarData avatar_data;
+	std::string birth_date;
 
 	msg->getUUIDFast(	_PREHASH_AgentData,			_PREHASH_AgentID, 		avatar_data.agent_id);
 	msg->getUUIDFast(	_PREHASH_AgentData,			_PREHASH_AvatarID, 		avatar_data.avatar_id);
@@ -254,11 +256,12 @@ void LLAvatarPropertiesProcessor::processAvatarPropertiesReply(LLMessageSystem*
 	msg->getUUIDFast(	_PREHASH_PropertiesData,	_PREHASH_PartnerID,		avatar_data.partner_id);
 	msg->getStringFast(	_PREHASH_PropertiesData,	_PREHASH_AboutText,		avatar_data.about_text);
 	msg->getStringFast(	_PREHASH_PropertiesData,	_PREHASH_FLAboutText,	avatar_data.fl_about_text);
-	msg->getStringFast(	_PREHASH_PropertiesData,	_PREHASH_BornOn,		avatar_data.born_on);
+	msg->getStringFast(	_PREHASH_PropertiesData,	_PREHASH_BornOn,		birth_date);
 	msg->getString(		_PREHASH_PropertiesData,	_PREHASH_ProfileURL,	avatar_data.profile_url);
 	msg->getU32Fast(	_PREHASH_PropertiesData,	_PREHASH_Flags,			avatar_data.flags);
 
 
+	LLDateUtil::dateFromPDTString(avatar_data.born_on, birth_date);
 	avatar_data.caption_index = 0;
 
 	S32 charter_member_size = 0;
diff --git a/indra/newview/llavatarpropertiesprocessor.h b/indra/newview/llavatarpropertiesprocessor.h
index 716c1b8065869026c2026d7b54c296df45193b2d..b9e8bfd0ab7b7a975ccbbf91ed87ea2559371770 100644
--- a/indra/newview/llavatarpropertiesprocessor.h
+++ b/indra/newview/llavatarpropertiesprocessor.h
@@ -67,7 +67,7 @@ struct LLAvatarData
 	LLUUID		partner_id;
 	std::string	about_text;
 	std::string	fl_about_text;
-	std::string	born_on;
+	LLDate		born_on;
 	std::string	profile_url;
 	U8			caption_index;
 	std::string	caption_text;
diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp
index abb2fdeb9a0a2f9e94c22f71a32cfb0ddda32e7b..3e71ecdfba84042b23e57d52994da101ad0cbe58 100644
--- a/indra/newview/lldateutil.cpp
+++ b/indra/newview/lldateutil.cpp
@@ -59,19 +59,22 @@ static S32 days_from_month(S32 year, S32 month)
 	}
 }
 
-std::string LLDateUtil::ageFromDate(const std::string& date_string,
-									const LLDate& now)
+bool LLDateUtil::dateFromPDTString(LLDate& date, const std::string& str)
+{
+	S32 month, day, year;
+	S32 matched = sscanf(str.c_str(), "%d/%d/%d", &month, &day, &year);
+	if (matched != 3) return false;
+	date.fromYMDHMS(year, month, day);
+	F64 secs_since_epoch = date.secondsSinceEpoch();
+	// Correct for the fact that specified date is in Pacific time, == UTC - 8
+	secs_since_epoch += 8.0 * 60.0 * 60.0;
+	date.secondsSinceEpoch(secs_since_epoch);
+	return true;
+}
+
+std::string LLDateUtil::ageFromDate(const LLDate& born_date, const LLDate& now)
 {
 	S32 born_month, born_day, born_year;
-	S32 matched = sscanf(date_string.c_str(), "%d/%d/%d", &born_month, &born_day, &born_year);
-	if (matched != 3) return "???";
-	LLDate born_date;
-	born_date.fromYMDHMS(born_year, born_month, born_day);
-	F64 born_date_secs_since_epoch = born_date.secondsSinceEpoch();
-	// Correct for the fact that account creation dates are in Pacific time,
-	// == UTC - 8
-	born_date_secs_since_epoch += 8.0 * 60.0 * 60.0;
-	born_date.secondsSinceEpoch(born_date_secs_since_epoch);
 	// explode out to month/day/year again
 	born_date.split(&born_year, &born_month, &born_day);
 
@@ -155,6 +158,16 @@ std::string LLDateUtil::ageFromDate(const std::string& date_string,
 	return LLTrans::getString("TodayOld");
 }
 
+std::string LLDateUtil::ageFromDate(const std::string& date_string, const LLDate& now)
+{
+	LLDate born_date;
+
+	if (!dateFromPDTString(born_date, date_string))
+		return "???";
+
+	return ageFromDate(born_date, now);
+}
+
 std::string LLDateUtil::ageFromDate(const std::string& date_string)
 {
 	return ageFromDate(date_string, LLDate::now());
diff --git a/indra/newview/lldateutil.h b/indra/newview/lldateutil.h
index 041be07f12069cc969443f2233e28369ae6fb857..a0df21022efbc923a495a980bf3ebaf453d60176 100644
--- a/indra/newview/lldateutil.h
+++ b/indra/newview/lldateutil.h
@@ -36,6 +36,29 @@ class LLDate;
 
 namespace LLDateUtil
 {
+	/**
+	 * Convert a date provided by the server into seconds since the Epoch.
+	 * 
+	 * @param[out] date Number of seconds since 01/01/1970 UTC.
+	 * @param[in]  str  Date string (MM/DD/YYYY) in PDT time zone.
+	 * 
+	 * @return true on success, false on parse error
+	 */
+	bool dateFromPDTString(LLDate& date, const std::string& str);
+
+	/**
+	 * Get human-readable avatar age.
+	 * 
+	 * Used for avatar inspectors and profiles.
+	 * 
+	 * @param born_date Date an avatar was born on.
+	 * @param now       Current date.
+	 * 
+	 * @return human-readable localized string like "1 year, 2 months",
+	 *         or "???" on error.
+	 */
+	std::string ageFromDate(const LLDate& born_date, const LLDate& now);
+
 	// Convert a date provided by the server (MM/DD/YYYY) into a localized,
 	// human-readable age (1 year, 2 months) using translation strings.
 	// Pass LLDate::now() for now.
diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
index 94ea236757281f92285425b032e5e53c0c44b82b..e48bb77bda0c9ffcc5152df94c4a93d148991943 100644
--- a/indra/newview/llinspectavatar.cpp
+++ b/indra/newview/llinspectavatar.cpp
@@ -58,6 +58,7 @@
 #include "llfloaterreg.h"
 #include "llmenubutton.h"
 #include "lltooltip.h"	// positionViewNearMouse()
+#include "lltrans.h"
 #include "lluictrl.h"
 
 #include "llavatariconctrl.h"
@@ -380,7 +381,11 @@ void LLInspectAvatar::requestUpdate()
 void LLInspectAvatar::processAvatarData(LLAvatarData* data)
 {
 	LLStringUtil::format_map_t args;
-	args["[BORN_ON]"] = data->born_on;
+	{
+		std::string birth_date = LLTrans::getString("AvatarBirthDateFormat");
+		LLStringUtil::format(birth_date, LLSD().with("datetime", (S32) data->born_on.secondsSinceEpoch()));
+		args["[BORN_ON]"] = birth_date;
+	}
 	args["[AGE]"] = LLDateUtil::ageFromDate(data->born_on, LLDate::now());
 	args["[SL_PROFILE]"] = data->about_text;
 	args["[RW_PROFILE"] = data->fl_about_text;
diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp
index a0ba2f739b07a28e8fa8f9cec4ecd104331afb64..dd632ccefe33bebf47f083c04c5ae7a53e4179f8 100644
--- a/indra/newview/llpanelavatar.cpp
+++ b/indra/newview/llpanelavatar.cpp
@@ -51,6 +51,7 @@
 #include "llnotificationsutil.h"
 #include "llvoiceclient.h"
 #include "llnamebox.h"
+#include "lltrans.h"
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // Class LLDropTarget
@@ -645,7 +646,11 @@ void LLPanelAvatarProfile::fillCommonData(const LLAvatarData* avatar_data)
 	LLAvatarIconIDCache::getInstance()->remove(avatar_data->avatar_id);
 
 	LLStringUtil::format_map_t args;
-	args["[REG_DATE]"] = avatar_data->born_on;
+	{
+		std::string birth_date = LLTrans::getString("AvatarBirthDateFormat");
+		LLStringUtil::format(birth_date, LLSD().with("datetime", (S32) avatar_data->born_on.secondsSinceEpoch()));
+		args["[REG_DATE]"] = birth_date;
+	}
 	args["[AGE]"] = LLDateUtil::ageFromDate( avatar_data->born_on, LLDate::now());
 	std::string register_date = getString("RegisterDateFormat", args);
 	childSetValue("register_date", register_date );
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index fd05f02ceb85b98081a73fe915eebfa2fd7f7f29..b3aeb8cd68ee42359ff8a273dd557867616dcd48 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -3577,4 +3577,7 @@ Missbrauchsbericht
 	<string name="Contents">
 		Inhalt
 	</string>
+    <string name="AvatarBirthDateFormat">
+        [day,datetime,slt]/[mthnum,datetime,slt]/[year,datetime,slt]
+    </string>
 </strings>
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 813f59ff8963523a083f7ef8940a6c137dfff1f2..df4e4153f4aa6dcb21231e70ecbedb36b57622c0 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -3103,4 +3103,8 @@ Abuse Report</string>
   <string name="New Script">New Script</string>
   <string name="New Folder">New Folder</string>
   <string name="Contents">Contents</string>
+
+  <!-- birth date format shared by avatar inspector and profile panels -->
+  <string name="AvatarBirthDateFormat">[mthnum,datetime,slt]/[day,datetime,slt]/[year,datetime,slt]</string>
+
 </strings>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index b9df82adcd505f02261e68e0cdb6f544edb8dcf9..a54d96061fbdef356fb22ff960fa569ddf154b25 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -3577,4 +3577,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 	<string name="Contents">
 		コンテンツ
 	</string>
+    <string name="AvatarBirthDateFormat">
+        [year,datetime,slt]/[mthnum,datetime,slt]/[day,datetime,slt]
+    </string>
 </strings>