/*
Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
- This program is free software; you can redistribute it and/or modify
+ This file is part of libdcp.
+
+ libdcp is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
- This program is distributed in the hope that it will be useful,
+ libdcp is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ along with libdcp. If not, see <http://www.gnu.org/licenses/>.
*/
#include <cstdio>
using std::string;
+using std::ostream;
using boost::lexical_cast;
using namespace dcp;
set_local_time_zone ();
}
+/** Construct a LocalTime from a boost::posix_time::ptime and a time zone offset */
+LocalTime::LocalTime (boost::posix_time::ptime t, int tz_hour, int tz_minute)
+{
+ _year = t.date().year ();
+ _month = t.date().month ();
+ _day = t.date().day ();
+ _hour = t.time_of_day().hours ();
+ _minute = t.time_of_day().minutes ();
+ _second = t.time_of_day().seconds ();
+ _millisecond = t.time_of_day().fractional_seconds () / 1000;
+ DCP_ASSERT (_millisecond < 1000);
+
+ _tz_hour = tz_hour;
+ _tz_minute = tz_minute;
+}
+
/** Set our UTC offset to be according to the local time zone */
void
LocalTime::set_local_time_zone ()
{
/* 2013-01-05T18:06:59+04:00 or 2013-01-05T18:06:59.123+04:00 */
/* 0123456789012345678901234 or 01234567890123456789012345678 */
-
+
if (s.length() < 25) {
throw TimeFormatError (s);
}
}
return buffer;
}
+
+bool
+LocalTime::operator== (LocalTime const & other) const
+{
+ return _year == other._year && _month == other._month && _day == other._day &&
+ _hour == other._hour && _second == other._second && _millisecond == other._millisecond &&
+ _tz_hour == other._tz_hour && _tz_minute == other._tz_minute;
+}
+
+bool
+LocalTime::operator!= (LocalTime const & other) const
+{
+ return !(*this == other);
+}
+
+ostream&
+dcp::operator<< (ostream& s, LocalTime const & t)
+{
+ s << t.as_string ();
+ return s;
+}