<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" 
"../../../tools/boostbook/dtd/boostbook.dtd">

<!-- Copyright (c) 2001-2005 CrystalClear Software, Inc.
     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)
-->

<section id="date_time.examples.seconds_since_epoch">
  <title>Seconds Since Epoch</title>

  <para> 
    Example of calculating seconds elapsed since epoch (1970-Jan-1) using local_date_time.
  </para>
  <programlisting>
    <![CDATA[
  /* This example demonstrates the use of the time zone database and 
   * local time to calculate the number of seconds since the UTC
   * time_t epoch 1970-01-01 00:00:00.  Note that the selected timezone
   * could be any timezone supported in the time zone database file which
   * can be modified and updated as needed by the user.
   *
   * To solve this problem the following steps are required:
   * 1) Get a timezone from the tz database for the local time
   * 2) Construct a local time using the timezone
   * 3) Construct a posix_time::ptime for the time_t epoch time
   * 4) Convert the local_time to utc and subtract the epoch time
   * 
   */

  #include "boost/date_time/local_time/local_time.hpp"
  #include <iostream>

  int main()
  {
    using namespace boost::gregorian; 
    using namespace boost::local_time;
    using namespace boost::posix_time;
    
    tz_database tz_db;
    try {
      tz_db.load_from_file("../data/date_time_zonespec.csv");
    }catch(data_not_accessible dna) {
      std::cerr << "Error with time zone data file: " << dna.what() << std::endl;
      exit(EXIT_FAILURE);
    }catch(bad_field_count bfc) {
      std::cerr << "Error with time zone data file: " << bfc.what() << std::endl;
      exit(EXIT_FAILURE);
    }

    time_zone_ptr nyc_tz = tz_db.time_zone_from_region("America/New_York");
    date in_date(2004,10,04);
    time_duration td(12,14,32);
    // construct with local time value
    // create not-a-date-time if invalid (eg: in dst transition)
    local_date_time nyc_time(in_date, 
                             td, 
                             nyc_tz, 
                             local_date_time::NOT_DATE_TIME_ON_ERROR);

    std::cout << nyc_time << std::endl;

    ptime time_t_epoch(date(1970,1,1)); 
    std::cout << time_t_epoch << std::endl;

    // first convert nyc_time to utc via the utc_time() 
    // call and subtract the ptime.
    time_duration diff = nyc_time.utc_time() - time_t_epoch;

    //Expected 1096906472
    std::cout << "Seconds diff: " << diff.total_seconds() << std::endl;

  }
    ]]>
  </programlisting>
</section>
