mirror of
https://github.com/boostorg/date_time.git
synced 2026-01-22 17:12:18 +00:00
* fix typo in time_period docs (#212) Co-authored-by: Quinn O'Connor <qoconnor@fastenal.com> * Fix constexpr of gregorian::date::date(special_values) to improve perf (#214) GCC up to at least 10.2 fail to resolve gregorian::date::date(special_values) as constexpr function due to assignment to *this within the constructor. Refactoring constructor to initialize the instance once leads to large performance improvement. * Avoid using likely function as multiple projects define a likely macro (#216) * Iso doc fixes (#215) * to_iso_*string() use "." as fractional separator The fractional separator for the various to_iso_* methods is "." not "," (per to_iso_string_type() implementation). Fix the documentation to match the implementation. * use "ISO 8601" not "iso" in documentation The standard is "ISO 8601", so use that instead of just "iso" or "ISO" in comments and documentation. * fractional seconds only included if non-zero (#110) Consistently document that the fractional seconds are only included if non-zero. Use "where fffffffff" not "were fff". * Fix ccache saving on cache hit (#211) See boostorg/boost-ci#166 * chore: bump macos runner version (#213) GitHub Action is sunsetting the macOS 10.15 Actions runner. It will stop working intermittently until being completely removed by 2022-8-30: https://github.blog/changelog/2022-07-20-github-actions-the-macos-10-15-actions-runner-image-is-being-deprecated-and-will-be-removed-by-8-30-22 Co-authored-by: Quinnsicle <qtoconnor@gmail.com> Co-authored-by: Quinn O'Connor <qoconnor@fastenal.com> Co-authored-by: Povilas Kanapickas <povilas@radix.lt> Co-authored-by: Antony Polukhin <antoshkka@gmail.com> Co-authored-by: Luke Mewburn <luke@mewburn.net> Co-authored-by: Alexander Grund <Flamefire@users.noreply.github.com> Co-authored-by: Baoshuo Ren <i@baoshuo.ren>
101 lines
3.2 KiB
C++
101 lines
3.2 KiB
C++
/* The following shows the creation of a facet for the output of
|
|
* dates in German (please forgive me for any errors in my German --
|
|
* I'm not a native speaker).
|
|
*/
|
|
|
|
#include "boost/date_time/gregorian/gregorian.hpp"
|
|
#include <iostream>
|
|
#include <algorithm>
|
|
|
|
/* Define a series of char arrays for short and long name strings
|
|
* to be associated with German date output (US names will be
|
|
* retrieved from the locale). */
|
|
const char* const de_short_month_names[] =
|
|
{
|
|
"Jan", "Feb", "Mar", "Apr", "Mai", "Jun",
|
|
"Jul", "Aug", "Sep", "Okt", "Nov", "Dez", "NAM"
|
|
};
|
|
const char* const de_long_month_names[] =
|
|
{
|
|
"Januar", "Februar", "Marz", "April", "Mai",
|
|
"Juni", "Juli", "August", "September", "Oktober",
|
|
"November", "Dezember", "NichtDerMonat"
|
|
};
|
|
const char* const de_long_weekday_names[] =
|
|
{
|
|
"Sonntag", "Montag", "Dienstag", "Mittwoch",
|
|
"Donnerstag", "Freitag", "Samstag"
|
|
};
|
|
const char* const de_short_weekday_names[] =
|
|
{
|
|
"Son", "Mon", "Die","Mit", "Don", "Fre", "Sam"
|
|
};
|
|
|
|
|
|
int main()
|
|
{
|
|
using namespace boost::gregorian;
|
|
|
|
// create some gregorian objects to output
|
|
date d1(2002, Oct, 1);
|
|
greg_month m = d1.month();
|
|
greg_weekday wd = d1.day_of_week();
|
|
|
|
// create a facet and a locale for German dates
|
|
date_facet* german_facet = new date_facet();
|
|
std::cout.imbue(std::locale(std::locale::classic(), german_facet));
|
|
|
|
// create the German name collections
|
|
date_facet::input_collection_type short_months, long_months,
|
|
short_weekdays, long_weekdays;
|
|
std::copy(&de_short_month_names[0], &de_short_month_names[11],
|
|
std::back_inserter(short_months));
|
|
std::copy(&de_long_month_names[0], &de_long_month_names[11],
|
|
std::back_inserter(long_months));
|
|
std::copy(&de_short_weekday_names[0], &de_short_weekday_names[6],
|
|
std::back_inserter(short_weekdays));
|
|
std::copy(&de_long_weekday_names[0], &de_long_weekday_names[6],
|
|
std::back_inserter(long_weekdays));
|
|
|
|
// replace the default names with ours
|
|
// NOTE: date_generators and special_values were not replaced as
|
|
// they are not used in this example
|
|
german_facet->short_month_names(short_months);
|
|
german_facet->long_month_names(long_months);
|
|
german_facet->short_weekday_names(short_weekdays);
|
|
german_facet->long_weekday_names(long_weekdays);
|
|
|
|
// output the date in German using short month names
|
|
german_facet->format("%d.%m.%Y");
|
|
std::cout << d1 << std::endl; //01.10.2002
|
|
|
|
german_facet->month_format("%B");
|
|
std::cout << m << std::endl; //Oktober
|
|
|
|
german_facet->weekday_format("%A");
|
|
std::cout << wd << std::endl; //Dienstag
|
|
|
|
|
|
// Output the same gregorian objects using US names
|
|
date_facet* us_facet = new date_facet();
|
|
std::cout.imbue(std::locale(std::locale::classic(), us_facet));
|
|
|
|
us_facet->format("%m/%d/%Y");
|
|
std::cout << d1 << std::endl; // 10/01/2002
|
|
|
|
// English names, ISO 8601 order (year-month-day), '-' separator
|
|
us_facet->format("%Y-%b-%d");
|
|
std::cout << d1 << std::endl; // 2002-Oct-01
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
/* Copyright 2001-2005: CrystalClear Software, Inc
|
|
* http://www.crystalclearsoftware.com
|
|
*
|
|
* Subject to the Boost Software License, Version 1.0.
|
|
* (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
|
|
*/
|
|
|