In this example we will discuss how to represent Date as an object in c++ using Boost Library.

C++ – Boost Library provides a type to represent date in Georgian Calendar i.e.

boost::gregorian::date

Representing a Date with boost::gregorian::date type

Let’s see how to create a Date Object and initialize it with a date 21’s March 2016 i.e.

boost::gregorian::date dateObj { 2016, 3, 21 };

Accessing day, month & year from a date object

Access day of month using day() member function i.e.

std::cout << dateObj.day() << '\n';

Access month using month() member function i.e.
std::cout << dateObj.month() << '\n';

Access year using year() member function i.e.
std::cout << dateObj.year() << '\n';

Access day of weak using year() member function i.e.
std::cout << dateObj.day_of_week() << '\n';

Let’s see a complete example,
#include <boost/date_time/gregorian/gregorian.hpp>
#include <iostream>

int main() {

	// Initializing Date object with 21st March 2016
	boost::gregorian::date dateObj { 2016, 3, 21 };

	// Accessing Day of Month from Date object
	std::cout << "Day of Month = " << dateObj.day() << '\n';

	// Accessing Month from Date object
	std::cout << "Month = " << dateObj.month() << '\n';

	// Accessing Year from Date object
	std::cout << "Year = " << dateObj.year() << '\n';

	// Accessing Day of week from Date object
	std::cout << "Day of Week = " << dateObj.day_of_week() << '\n';

	// Printing complete Date object on console
	std::cout << "Date = " << dateObj << '\n';
}

Output:
Day of Month = 21
Month = Mar
Year = 2016
Day of Week = Mon
Date = 2016-Mar-21

Initializing Date object with Current Date

Let’s see how to initialize a date object with todays date instead of hard coded dates i.e.

Initializing Date object with current Date in Local Timezone,

boost::gregorian::date todaysDateInLocalTZ = boost::gregorian::day_clock::local_day();

Initializing Date object with current Date in UTC Timezone,
boost::gregorian::date todaysDateInUTCTZ = boost::gregorian::day_clock::local_day();

Checkout the example as follows,
#include <boost/date_time/gregorian/gregorian.hpp>
#include <iostream>

int main() {

	// Initializing Date object with today's in Local Time Zone
	boost::gregorian::date todaysDateInLocalTZ =
			boost::gregorian::day_clock::local_day();

	// Printing complete Date object on console
	std::cout << "Date in System's Time Zone= " << todaysDateInLocalTZ << '\n';

	// Initializing Date object with today's in UTC Time Zone
	boost::gregorian::date todaysDateInUtcTZ =
			boost::gregorian::day_clock::universal_day();

	// Printing complete Date object on console
	std::cout << "Date in UTC Time Zone = " << todaysDateInUtcTZ << '\n';
}

Output:
Date in System's Time Zone= 2016-Oct-21
Date in UTC Time Zone = 2016-Oct-22


My System is in Anchorage Time Zone where Date is 21st October at this point of time, therefore according to UTC Timezone Date is 22nd October.

To compile the above examples use following command in linux,

g++ –std=c++11 example.cpp -lboost_date_time

Join a list of 2000+ Programmers for latest Tips & Tutorials