Skip to content
Snippets Groups Projects
Commit 305ec89a authored by James Cook's avatar James Cook
Browse files

Added ageFromDateISO() for YYYY-MM-DD dates

parent 087736c1
Branches
No related tags found
No related merge requests found
...@@ -59,12 +59,9 @@ static S32 days_from_month(S32 year, S32 month) ...@@ -59,12 +59,9 @@ static S32 days_from_month(S32 year, S32 month)
} }
} }
std::string LLDateUtil::ageFromDate(const std::string& date_string, static std::string age_from_date(S32 born_year, S32 born_month, S32 born_day,
const LLDate& now) 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; LLDate born_date;
born_date.fromYMDHMS(born_year, born_month, born_day); born_date.fromYMDHMS(born_year, born_month, born_day);
F64 born_date_secs_since_epoch = born_date.secondsSinceEpoch(); F64 born_date_secs_since_epoch = born_date.secondsSinceEpoch();
...@@ -155,7 +152,31 @@ std::string LLDateUtil::ageFromDate(const std::string& date_string, ...@@ -155,7 +152,31 @@ std::string LLDateUtil::ageFromDate(const std::string& date_string,
return LLTrans::getString("TodayOld"); return LLTrans::getString("TodayOld");
} }
std::string LLDateUtil::ageFromDate(const std::string& date_string,
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 "???";
return age_from_date(born_year, born_month, born_day, now);
}
std::string LLDateUtil::ageFromDate(const std::string& date_string) std::string LLDateUtil::ageFromDate(const std::string& date_string)
{ {
return ageFromDate(date_string, LLDate::now()); return ageFromDate(date_string, LLDate::now());
} }
std::string LLDateUtil::ageFromDateISO(const std::string& date_string,
const LLDate& now)
{
S32 born_month, born_day, born_year;
S32 matched = sscanf(date_string.c_str(), "%d-%d-%d",
&born_year, &born_month, &born_day);
if (matched != 3) return "???";
return age_from_date(born_year, born_month, born_day, now);
}
std::string LLDateUtil::ageFromDateISO(const std::string& date_string)
{
return ageFromDateISO(date_string, LLDate::now());
}
...@@ -44,6 +44,12 @@ namespace LLDateUtil ...@@ -44,6 +44,12 @@ namespace LLDateUtil
// Calls the above with LLDate::now() // Calls the above with LLDate::now()
std::string ageFromDate(const std::string& date_string); std::string ageFromDate(const std::string& date_string);
// As above, for YYYY-MM-DD dates
std::string ageFromDateISO(const std::string& date_string, const LLDate& now);
// Calls the above with LLDate::now()
std::string ageFromDateISO(const std::string& date_string);
} }
#endif #endif
...@@ -189,4 +189,14 @@ namespace tut ...@@ -189,4 +189,14 @@ namespace tut
LLDateUtil::ageFromDate("12/13/2009", now), LLDateUtil::ageFromDate("12/13/2009", now),
"3 weeks old" ); "3 weeks old" );
} }
template<> template<>
void dateutil_object_t::test<6>()
{
set_test_name("ISO dates");
LLDate now(std::string("2010-01-04T12:00:00Z"));
ensure_equals("days",
LLDateUtil::ageFromDateISO("2009-12-13", now),
"3 weeks old" );
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment