diff options
Diffstat (limited to 'src/boost/libs/locale/examples/calendar.cpp')
-rw-r--r-- | src/boost/libs/locale/examples/calendar.cpp | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/boost/libs/locale/examples/calendar.cpp b/src/boost/libs/locale/examples/calendar.cpp new file mode 100644 index 00000000..d905511a --- /dev/null +++ b/src/boost/libs/locale/examples/calendar.cpp @@ -0,0 +1,71 @@ +// +// Copyright (c) 2009-2011 Artyom Beilis (Tonkikh) +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +#include <boost/locale.hpp> +#include <iostream> +#include <iomanip> +#include <ctime> + +int main() +{ + using namespace boost::locale; + + generator gen; + std::locale::global(gen("")); + std::cout.imbue(std::locale()); + // Setup environment + + boost::locale::date_time now; + + date_time start=now; + + // Set the first day of the first month of this year + start.set(period::month(),now.minimum(period::month())); + start.set(period::day(),start.minimum(period::day())); + + int current_year = period::year(now); + + + // Display current year + std::cout << format("{1,ftime='%Y'}") % now << std::endl; + + // + // Run forward untill current year is the date + // + for(now=start; period::year(now) == current_year;) { + + // Print heading of month + if(calendar().is_gregorian()) + std::cout << format("{1,ftime='%B'}") % now <<std::endl; + else + std::cout << format("{1,ftime='%B'} ({1,ftime='%Y-%m-%d',locale=en} - {2,locale=en,ftime='%Y-%m-%d'})") + % now + % date_time(now,now.maximum(period::day())*period::day()) << std::endl; + + int first = calendar().first_day_of_week(); + + // Print weeks days + for(int i=0;i<7;i++) { + date_time tmp(now,period::day_of_week() * (first + i)); + std::cout << format("{1,w=8,ftime='%a'} ") % tmp; + } + std::cout << std::endl; + + int current_month = now / period::month(); + int skip = now / period::day_of_week_local() - 1; + for(int i=0;i<skip*9;i++) + std::cout << ' '; + for(;now / period::month() == current_month ;now += period::day()) { + std::cout << format("{1,w=8,ftime='%e'} ") % now; + if(now / period::day_of_week_local() == 7) + std::cout << std::endl; + } + std::cout << std::endl; + } + +} +// vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 |