summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften')
-rw-r--r--Swiften/Base/DateTime.cpp10
-rw-r--r--Swiften/Base/UnitTest/DateTimeTest.cpp7
2 files changed, 16 insertions, 1 deletions
diff --git a/Swiften/Base/DateTime.cpp b/Swiften/Base/DateTime.cpp
index 4f55a8e..d19e9c7 100644
--- a/Swiften/Base/DateTime.cpp
+++ b/Swiften/Base/DateTime.cpp
@@ -10,12 +10,13 @@
#include <boost/date_time/time_facet.hpp>
#include <boost/date_time/local_time/local_time.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/c_local_time_adjustor.hpp>
#include <Swiften/Base/String.h>
+#include <Swiften/Base/Log.h>
namespace Swift {
boost::posix_time::ptime stringToDateTime(const std::string& string) {
static std::locale locale(std::locale::classic(), new boost::local_time::local_time_input_facet("%Y-%m-%d %H:%M:%S%F%ZP"));
std::istringstream stream(string);
@@ -30,10 +31,17 @@ std::string dateTimeToString(const boost::posix_time::ptime& time) {
String::replaceAll(stampString, ',', ".");
stampString += "Z";
return stampString;
}
std::string dateTimeToLocalString(const boost::posix_time::ptime& time) {
- return boost::posix_time::to_simple_string(boost::date_time::c_local_adjustor<boost::posix_time::ptime>::utc_to_local(time));
+ std::string localString;
+ try {
+ localString = boost::posix_time::to_simple_string(boost::date_time::c_local_adjustor<boost::posix_time::ptime>::utc_to_local(time));
+ }
+ catch(std::out_of_range& exception) {
+ SWIFT_LOG(debug) << exception.what() << std::endl;
+ }
+ return localString;
}
}
diff --git a/Swiften/Base/UnitTest/DateTimeTest.cpp b/Swiften/Base/UnitTest/DateTimeTest.cpp
index 936a3ec..a9350fa 100644
--- a/Swiften/Base/UnitTest/DateTimeTest.cpp
+++ b/Swiften/Base/UnitTest/DateTimeTest.cpp
@@ -15,12 +15,13 @@ using namespace Swift;
class DateTimeTest : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(DateTimeTest);
CPPUNIT_TEST(testStringToDateTime_UTC);
CPPUNIT_TEST(testStringToDateTime_WithTimezone);
CPPUNIT_TEST(testDateTimeToString);
+ CPPUNIT_TEST(testDateTimeToLocalStringNotThrowingException);
CPPUNIT_TEST_SUITE_END();
public:
void testStringToDateTime_UTC() {
boost::posix_time::ptime time = stringToDateTime("1969-07-21T02:56:15Z");
@@ -35,9 +36,15 @@ class DateTimeTest : public CppUnit::TestFixture {
void testDateTimeToString() {
boost::posix_time::ptime time = stringToDateTime("1969-07-20T21:56:15-05:00");
CPPUNIT_ASSERT_EQUAL(std::string("1969-07-21T02:56:15Z"), dateTimeToString(time));
}
+
+ void testDateTimeToLocalStringNotThrowingException() {
+ boost::posix_time::ptime time = stringToDateTime("1954-07-20T21:56:15-05:00");
+
+ CPPUNIT_ASSERT_EQUAL(std::string(""), dateTimeToLocalString(time));
+ }
};
CPPUNIT_TEST_SUITE_REGISTRATION(DateTimeTest);