diff options
| author | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2011-08-10 17:53:11 -0400 |
|---|---|---|
| committer | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2011-08-10 17:53:11 -0400 |
| commit | 6732f5fbca2dc83ec1cf6fcb31b5a6657e8d040f (patch) | |
| tree | 48165a2aa3aed2133d1d79742e3d64cce3ca2b01 /indra/newview/lldateutil.cpp | |
| parent | 20c3d8485480487d38500c9b18846ca96d1d6f83 (diff) | |
| parent | c7b6a25728cd360348d1c3da5ace0971767206a4 (diff) | |
merge viewer-development to mesh-development
Diffstat (limited to 'indra/newview/lldateutil.cpp')
| -rw-r--r-- | indra/newview/lldateutil.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp index 18ae6107e7..c7fc45f61e 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(); +} |
