summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/locale/examples/calendar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/locale/examples/calendar.cpp')
-rw-r--r--src/boost/libs/locale/examples/calendar.cpp71
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