Change HistoryChanges from Boost 1.41 to 1.44 (date_time 1.08 to 1.09)TypeDescriptionBug fix
The "%T" and "%R" format specifiers are now processed by the library rather than underlying standard facet.
This fixes the cases when the placeholders are not supported by the facet
(#3876).
Changes from Boost 1.40 to 1.41 (date_time 1.07 to 1.08)TypeDescriptionChange
The default format for time durations is now "%-%O:%M:%S%F" instead of "%-%H:%M:%S%F" that was used previously. In order to retain the old behavior, the format string has to be specified explicitly during the time IO facet construction (#1861).
Bug fix
Gregorian dates now use 32-bit integer type internally on 64-bit platforms (#3308).
Bug fix
Adjusted UTC time zone offset boundaries in order to allow offsets up to +14 hours (#2213).
Changes from Boost 1.38 to 1.40 (date_time 1.06 to 1.07)TypeDescriptionBug fix
Minor bug fixes (#2809,
#2824,
#3015,
#3105 and others).
Changes from Boost 1.34 to 1.38 (date_time 1.05 to 1.06)TypeDescriptionFeature
Added support for formatting and reading time durations longer than 24 hours.
A new formatter %O is used indicate such long durations in the
format string. The old %H format specifier is thus restricted
to represent durations that fit into two characters, in order to retain support
for reading durations in ISO format. In case if it is detected that the %H
format specifier is used with longer durations, the results are not specified
(an assertion in debug builds is raised).
Bug fix
Added support for GCC 4.3. Several compilation issues were solved, as well as
compiler warnings were taken care of.
Bug fix
Added missing streaming operators for the local_time_period class.
Bug fix
Added several missing includes in different places. Some includes that are
not needed in some configurations were made conditional.
Bug fix
Solved compilation problem that was caused by not finding streaming operators
for gregorian::date_duration via ADL. The type is now made actually
a class rather a typedef for the date_time::date_duration template.
The similar change was done for gregorian::weeks.
Bug fix
Added a correctly spelled date_time::hundredth time resolution enum
value. The old one date_time::hundreth is considered deprecated and
to be removed in future releases.
Bug fix
Fixed compilation error in format_date_parser.hpp because of incorrect
stream type being used.
Bug fix
On Windows platform made inclusion of windows.h optional. The header is only used
when the BOOST_USE_WINDOWS_H macro is defined. Otherwise (and by default),
the library uses internal definitions of symbols from this header.
Bug fix
On Windows platform function from_ftime could return incorrect time if
the FILETIME that is being passed to the function contained dates before 1970-Jan-01.
Bug fix
Fixed a possible crash in gregorian::special_value_from_string if the string
did not represent a valid special value.
Bug fix
Removed the testfrmwk.hpp file from the public include directory. This file
was internal for the library tests and was not documented.
Bug fix
Fixed missing include in filetime_functions.hpp
(#2688).
Bug fix
Fixed dereferencing end string iterators in different places of code,
which could cause crashes on MSVC
(#2698).
Changes from Boost 1.33 to 1.34 (date_time 1.04 to 1.05)TypeDescriptionFeature
Updated the data in the date_time_zonespec.csv file to reflect new US/Canada
daylight savings time rules for 2007. If you upgrade to the new file, be aware
that the library will only give correct answers for current/future date
conversions. So if you are converting dates from earlier years the answers
will reflect current time zone rules not past rules. The library doesn't support
historic timezone rules presently.
Feature
Two other dst calculation features have also been update to reflect the new
US/Canada timzone rules. This is the boost::date_time::us_dst_rules and
dst_calc_engine. While the us_dst_rules is officially deprecated, a patch
by Graham Bennett has been applied which allows this class to work correctly
for both historical and future dates. The dst_calc_engine was updated to also
work for historical and future times. This allows the various local_adjustor
classes to work correctly. There was an interface change for classes using the
dst_calc_engine with custom dst traits classes. The traits classes signatures
changed to take a 'year' parameter on most of the methods such as end_month.
In addition, 2 new functions are needed on the traits classes:
static date_type local_dst_start_day(year_type year) and
static date_type local_dst_end_day(year_type year).
Implementers should see date_time/local_timezone_defs.hpp for
examples.
Bug FixFix DST traits for Austrialia (sf# 1672139) to set end of DST at 3:00 am instead of 2:00 am.
Bug FixFix a problem with potential linking error with multiple definitions due
to I/O code.
Bug FixChanged serialization code in both greg_serialize.hpp and time_serialize.hpp
to eliminate warnings due to unused variables for version and file_version.
Thanks to Caleb Epstein for the patch suggestion.
Bug FixFix regression errors that showed up under FreeBSD with GCC and the
LANG environment set to russian -- changed parser to use classic
locale instead of blank locale.
Bug FixChanges for tracker issue 1178092 -- change in convert_to_lower to make
local a const static and speed up parsing.
Bug FixPatches from Ulrich Eckhardt to fix support for EVC++ 4.
FeatureReduce the usage of basic_stringstream as much a possible to work around
a bug in the VC8 standard library. See
mailing list archive
for more information.
Changes from Boost 1.32 to 1.33 (date_time 1.03 to 1.04)TypeDescriptionBug FixPeriod lengths, when beginning and end points are the same, or are consecutive, were being incorrectly calculated. The corrected behavior, where end and beginning points are equal, or a period is created with a zero duration, now return a length of zero. A period where beginning and end points are consecutive will return a length of one.
Bug FixTime_input_facet was missing functions to set iso formats. It also failed to parse time values that did not use a separator (%H%M%S). Both these bugs have been corrected.
FeaturePreliminary names of ptime_facet and ptime_input_facet changed to simply time_facet and time_input_facet. The ptime_* versions have been removed all together.
FeatureThe from_iso_string function failed to parse fractional digits. We added code that correctly parses when input has more digits, or too few digits, that the compiled library precision. Ptimes with only a decimal are also correctly parsed.
Bug FixThe parsing mechanism in the new IO would consume the next character after a match was made. This bug presented itself when attempting to parse a period that had special value for it's beginning point.
Bug FixThe new IO system failed to provide the ability for the user to "turn on" exceptions on the stream. The failbit was also not set when parsing failed. Both of these problems have been fixed.
Bug FixParsing of special values, by means of from_*_string functions, has been fixed. This also effects the libraries ability to serialize special values. Time_duration now serializes as either a string or individual fields (depending on is_special()).
Bug FixPreviously, output streaming of partial_date would display the day as either a single or double digit integer (ie '1', or '12'). This has been corrected to always display a double digit integer (ie '01').
FeatureMajor new features related to management of local times.
This includes the introduction of a series of new classes to
represent time zones and local times (see Date Time Local Time for complete details).
FeatureInput and output facets have been re-written to support format-based
redefinition of formats (see Date Time IO for complete details).
FeatureFunctions have been added to facilitate conversions between tm structs for date, ptime, time_duration, and local_date_time. Functions for converting FILETIME, and time_t to ptime are also provided. See the individual sections for details.
FeatureA universal_time function has been added to the microsec_time_clock (full details of this function can be found here).
FeatureFunctions have been added to facilitate conversions between tm structs for date, ptime, time_duration, and local_date_time. Functions for converting FILETIME, and time_t to ptime are also provided. See the individual sections for details.
FeatureA universal_time function has been added to the microsec_time_clock (full details of this function can be found here).
FeatureDate-time now uses reentrant POSIX functions on those platforms that
support them when BOOST_HAS_THREADS is defined.
Bug FixFixed a bug in serialization code where special values
(not-a-date-time, infinities, etc) for
ptime, time_duration would not read back correctly from an archive.
The output serialization code wrote subfields such
as time_duration.seconds() which are invalid for special values and
thus undefined values. Thus when read back the values could cause
strange behavior including execeptions on construction.
Bug FixFixed multiple warnings generated with various platforms/compilers.
Bug FixConstruction of a ptime with a time_duration beyond the range of 00:00 to 23:59:59.9... now adjusts the date and time to make the time_duration fall within this range (ie ptime(date(2005,2,1), hours(-5)) -> "2005-Jan-31 19:00:00" & ptime(date(2005,2,1), hours(35)) -> "2005-Feb-02 11:00:00").
Bug FixTime parsing now correctly handles excessive digits for fractional seconds. Leading zeros are dropped ("000100" -> 100 frac_sec), and excessive digits are truncated at the proper place ("123456789876" -> 123456 or 123456789 depending on what precision the library was compiled with).
Bug FixChanges to the boost::serialization interface broke serialization compatibility for date_time. The user must provide a function to insure date_time objects are const before they are serialized. The function should be similar to:
template<class archive_type, class temporal_type>
void save_to(archive_type& ar,
const temporal_type& tt)
{
ar << tt;
}Bug FixUse of the depricated boost::tokenizer interface has been updated to the current interface. This fixes compiler errors on some older compilers.
Bug FixTemplatized formatters in the legacy IO system to accept char type. Also removed calls to boost::lexical_cast.
Changes from Boost 1.31 to 1.32 (date_time 1.02 to 1.03)TypeDescriptionBug FixSnap to end of month behavior corrected for year_functor. Previously, starting
from 2000-Feb-28 (leap year and not end of month) and iterating through the next
leap year would result in 2004-Feb-29 instead of 2004-Feb-28. This behavior has
been corrected to produce the correct result of 2004-Feb-28. Thanks to Bart Garst
for this change.
FeatureFree function for creating a ptime object from a FILETIME struct. This function
is only available on platforms that define BOOST_HAS_FTIME.
FeatureMicrosecond time clock is now available on most windows compilers as well as
Unix.
FeatureUse of the boost::serialization library is now available with most of the
date_time classes. Classes capable of serialization are: date_generator classes,
date, days, date_period, greg_month, greg_weekday, greg_day, ptime, time_duration,
and time_period. Thanks to Bart Garst for this change.
FeatureFunctions added to convert date and time classes to wstring. The library now
provides to_*_wstring as well as to_*_string functions for: simple, iso,
iso_extended, and sql for dates and compilers that support wstrings. Thanks to
Bart Garst for this change.
FeaturePeriod classes now handle zero length and NULL periods correctly. A NULL period
is a period with a negative length. Thanks to Frank Wolf and Bart Garst for this
change.
FeatureAdded end_of_month function to gregorian::date to return the last day of
the current month represented by the date. Result is undefined for
not_a_date_time or infinities.
Bug FixRemoved incorrect usage of BOOST_NO_CWCHAR macro throughout library.
FeatureNew names added for some date classes. Original names are still valid but may
some day be deprecated. Changes are:
date_durationis nowdaysnth_kday_of_monthis nownth_day_of_the_week_in_monthfirst_kday_of_monthis nowfirst_day_of_the_week_in_monthlast_kday_of_monthis nowlast_day_of_the_week_in_monthfirst_kday_afteris nowfirst_day_of_the_week_afterfirst_kday_beforeis nowfirst_day_of_the_week_beforeFeatureFree functions for date generators added. Functions are: days_until_weekday, days_before_weekday, next_weekday, and previous_weekday.
days days_until_weekday(date, greg_weekday);
days days_before_weekday(date, greg_weekday);
date next_weekday(date, greg_weekday);
date previous_weekday(date, greg_weekday);
Thanks to Bart Garst for this change.
FeatureNew experimental duration types added for months, years, and weeks. These classes
also provide mathematical operators for use with date and time classes. Be aware
that adding of months or years a time or date past the 28th of a month may show
non-normal mathematical properties. This is a result of 'end-of-month'
snapping used in the calculation. The last example below illustrates the
issue.
months m(12);
years y(1);
m == y; // true
days d(7);
weeks w(1);
d == w; // true
ptime t(...);
t += months(3);
date d(2004,Jan,30);
d += months(1); //2004-Feb-29
d -= months(1); //2004-Jan-29
Input streaming is not yet implemented for these types.
Thanks to Bart Garst for this change.
FeatureUnifying base class for date_generators brought in to gregorian namespace. See Print Holidays Example.
FeatureAdded constructors for date and ptime that allow for default construction (both)
and special values construction (ptime, both now support this). Default
constructors initialize the objects to not_a_date_time (NADT).
ptime p_nadt(not_a_date_time);
ptime p_posinf(pos_infin);
ptime p; // p == NADT
date d; // d == NADT
Thanks to Bart Garst for this change.
FeatureOutput streaming now supports wide stream output on compiler / standard library combinations that support wide streams. This allows code like:
std::wstringstream wss;
date d(2003,Aug,21);
wss << d;
Thanks to Bart Garst for this change.
FeatureInput streaming for date and time types is now supported on both wide and narrow streams:
date d(not_a_date_time);
std::stringstream ss("2000-FEB-29");
ss >> d; //Feb 29th, 2000
std::wstringstream ws("2000-FEB-29");
ws >> d; //Feb 29th, 2000
Thanks to Bart Garst for this change.
Bug Fix Fixed bug in duration_from_string() where a string formatted with
less than full amount of fractional digits created an incorrect
time_duration. With microsecond resolution for time durations
the string "1:01:01.010" created a time duration of
01:01:01.000010 instead of 01:01:01.010000
Bug FixFixed the special value constructor for gregorian::date and posix_time::ptime
when constructing with min_date_time or max_date_time. The wrong value was
constructed for these.
Changes from Boost 1.30 to 1.31 (date_time 1.01 to 1.02)TypeDescriptionBug FixBuild configuration updated so dll, statically, and dynamically linkable library files are now produced with MSVC compilers. See Build/Compiler Information for more details.Bug FixTime_duration from_string is now correctly constructed from a negative value. (ie "-0:39:00.000") Code provided by Bart Garst.Bug FixFixed many MSVC compiler warnings when compiled with warning level 4.FeatureAdded prefix decrement operator (--) for date and time iterators. See Time Iterators and Date Iterators for more details. Code provided by Bart Garst.FeatureSpecial_values functionality added for date_duration, time_duration and time classes. Code provided by Bart Garst.Bug FixFixed time_duration_traits calculation bug which was causing time duration to be limited to 32bit range even when 64 bits were available. Thanks to Joe de Guzman for tracking this down.Bug FixProvided additional operators for duration types (eg: date_duration, time_duration). This includes dividable by integer and fixes to allow +=, -= operators. Thanks to Bart Garst for writing this code. Also, the documentation of Calculations has been improved.Bug FixAdded typedefs to boost::gregorian gregorian_types.hpp various date_generator function classes.FeatureAdded from_time_t function to convert time_t to a ptime.FeatureAdded a span function for combining periods. See date period and time period docs.FeatureAdded a function to time_duration to get the total number of seconds in a
duration truncating any fractional seconds. In addition, other resolutions
were added to allow for easy conversions. For example
seconds(1).total_milliseconds() == 1000
seconds(1).total_microseconds() == 1000000
hours(1).total_milliseconds() == 3600*1000 //3600 sec/hour
seconds(1).total_nanoseconds() == 1000000000FeatureAdded output streaming operators for the date generator classes - partial_date, first_kday_after, first_kday_before, etc. Thanks to Bart Garst for this work.FeatureAdded unary- operators for durations for reversing the sign of a time duration. For example:
time_duration td(5,0,0); //5 hours
td = -td; //-5 hours
Thanks to Bart Garst for this work.FeatureAdded support for parsing strings with 'month names'. Thus creating a date object from string now accepts multiple formats ("2003-10-31","2003-Oct-31", and "2003-October-31"). Thus, date d = from_simple_string("2003-Feb-27") is now allowed. A bad month name string ( from_simple_string("2003-SomeBogusMonthName-27")) will cause a bad_month exception. On most compilers the string compare is case insensitive. Thanks to Bart Garst for this work.FeatureIn addition to support for month names or numbers, functions have been added to create date objects from multi-ordered date strings. Ex: "January-21-2002", "2002-Jan-21", and "21-Jan-2003". See Date Class for more details.Bug-FixVarious documentation fixes. Thanks to Bart Garst for updates.Changes from Boost 1.29 to 1.30 (date_time 1.00 to 1.01)
Notice: The interface to the partial_date class (see date_algorithms) was changed. The order of construction parameters was changed which will cause some code to fail execution. This change was made to facilitate more generic local time adjustment code. Thus instead of specifying partial_date pd(Dec,25) the code needs to be changed to partial_date pd(25, Dec);
TypeDescriptionBug FixAdded new experimental feature for Daylight Savings Time calculations. This allows traits based specification of dst rules.FeatureAdded new interfaces to calculate julian day and modified julian day to the gregorian date class. See boost::gregorian::date.FeatureAdd new interface to calculate iso 8601 week number for a date. See boost::gregorian::date.FeatureAdd an iso 8601 time date-time format (eg: YYYYMMDDTHHHMMSS) parsing function. See Class ptime for more information.Feature Added a length function to the period template so that both date_periods and time_periods will now support this function.Bug FixSplit Jamfiles so that libs/date_time/build/Jamfile only builds library and /libs/date_time/libs/test/Jamfile which runs tests.Bug FixFixed many minor documentation issues.Bug FixRemoved the DATE_TIME_INLINE macro which was causing link errors. This macro is no longer needed in projects using the library.Bug FixAdded missing typedef for year_iterator to gregorian_types.hppBug FixFixed problem with gregorian ostream operators that prevented the use of wide streams.Bug-FixTighten error handling for dates so that date(2002, 2, 29) will throw a bad_day_of_month exception. Previously the date would be incorrectly constructed. Reported by sourceforge bug: 628054 among others.