File: dates_as_strings.cpp

package info (click to toggle)
boost1.42 1.42.0-4
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 277,864 kB
  • ctags: 401,076
  • sloc: cpp: 1,235,659; xml: 74,142; ansic: 41,313; python: 26,756; sh: 11,840; cs: 2,118; makefile: 655; perl: 494; yacc: 456; asm: 353; csh: 6
file content (63 lines) | stat: -rw-r--r-- 1,946 bytes parent folder | download | duplicates (13)
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
58
59
60
61
62
63
/* 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;
}

/*  Copyright 2001-2004: 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)
 */