diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp
index ea5462a3e34dbbd367e56278344388b1a9ed1f3f..aeac3841f992e73f349d57176d9cadae9b8b34cc 100644
--- a/indra/newview/llgroupmgr.cpp
+++ b/indra/newview/llgroupmgr.cpp
@@ -56,6 +56,16 @@
 #include "lluictrlfactory.h"
 #include <boost/regex.hpp>
 
+#if LL_MSVC
+// disable boost::lexical_cast warning
+#pragma warning (disable:4702)
+#endif
+
+#include <boost/lexical_cast.hpp>
+
+#if LL_MSVC
+#pragma warning(pop)   // Restore all warnings to the previous state
+#endif
 
 const U32 MAX_CACHED_GROUPS = 10;
 
@@ -833,13 +843,13 @@ static void formatDateString(std::string &date_string)
 	const regex expression("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})");
 	if (regex_match(date_string.c_str(), result, expression))
 	{
-		std::string year = result[3];
-		std::string month = result[1];
-		std::string day = result[2];
+		// convert matches to integers so that we can pad them with zeroes on Linux
+		S32 year	= boost::lexical_cast<S32>(result[3]);
+		S32 month	= boost::lexical_cast<S32>(result[1]);
+		S32 day		= boost::lexical_cast<S32>(result[2]);
 
 		// ISO 8601 date format
-		//date_string = llformat("%02s/%02s/%04s", month.c_str(), day.c_str(), year.c_str());
-		date_string = llformat("%04s/%02s/%04s", year.c_str(), month.c_str(), day.c_str());
+		date_string = llformat("%04d/%02d/%02d", year, month, day);
 	}
 }