File: demo1.cpp

package info (click to toggle)
boost1.74 1.74.0%2Bds1-21
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 463,588 kB
  • sloc: cpp: 3,338,117; xml: 131,293; python: 33,088; ansic: 14,292; asm: 4,038; sh: 3,353; makefile: 1,193; perl: 1,036; yacc: 478; php: 212; ruby: 102; lisp: 24; sql: 13; csh: 6
file content (57 lines) | stat: -rw-r--r-- 1,933 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
// https://www.boost.org/doc/libs/1_67_0/doc/html/date_time/examples.html#date_time.examples.dates_as_strings

/* The following is a simple example that shows conversion of dates 
   * to and from a std::string.
   *
   * Expected output:
   * 2001-Oct-09
   * 2001-10-09
   * Tuesday October 9, 2001
   * An expected exception is next:
   * Exception: Month number is out of range 1..12
   */

#include "boost/date_time/gregorian/gregorian.hpp"
#include <iostream>
#include <string>

int main()
{

    using namespace boost::gregorian;

    try
    {
        // The following date is in ISO 8601 extended format (CCYY-MM-DD)
        std::string s("2001-10-9"); //2001-October-09
        date d(from_simple_string(s));
        std::cout << to_simple_string(d) << std::endl;

        //Read ISO Standard(CCYYMMDD) and output ISO Extended
        std::string ud("20011009"); //2001-Oct-09
        date d1(from_undelimited_string(ud));
        std::cout << to_iso_extended_string(d1) << std::endl;

        //Output the parts of the date - Tuesday October 9, 2001
        date::ymd_type ymd = d1.year_month_day();
        greg_weekday wd = d1.day_of_week();
        std::cout << wd.as_long_string() << " "
                  << ymd.month.as_long_string() << " "
                  << ymd.day << ", " << ymd.year
                  << std::endl;

        //Let's send in month 25 by accident and create an exception
        std::string bad_date("20012509"); //2001-??-09
        std::cout << "An expected exception is next: " << std::endl;
        date wont_construct(from_undelimited_string(bad_date));
        //use wont_construct so compiler doesn't complain, but you wont get here!
        std::cout << "oh oh, you shouldn't reach this line: "
                  << to_iso_string(wont_construct) << std::endl;
    }
    catch (std::exception &e)
    {
        std::cout << "  Exception: " << e.what() << std::endl;
    }

    return 0;
}