~ubuntu-branches/ubuntu/wily/davix/wily

« back to all changes in this revision

Viewing changes to deps/boost_intern/boost/date_time/posix_time/conversion.hpp

  • Committer: Package Import Robot
  • Author(s): Mattias Ellert
  • Date: 2015-07-31 13:17:55 UTC
  • mfrom: (5.1.3 sid)
  • Revision ID: package-import@ubuntu.com-20150731131755-mizprbmn7ogv33te
Tags: 0.4.1-1
* Update to version 0.4.1
* Implement Multi-Arch support

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef POSIX_TIME_CONVERSION_HPP___
2
 
#define POSIX_TIME_CONVERSION_HPP___
3
 
 
4
 
/* Copyright (c) 2002-2005 CrystalClear Software, Inc.
5
 
 * Use, modification and distribution is subject to the
6
 
 * Boost Software License, Version 1.0. (See accompanying
7
 
 * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
8
 
 * Author: Jeff Garland, Bart Garst
9
 
 * $Date: 2010-06-09 11:10:13 -0700 (Wed, 09 Jun 2010) $
10
 
 */
11
 
 
12
 
#include <cstring>
13
 
#include <boost/date_time/posix_time/ptime.hpp>
14
 
#include <boost/date_time/posix_time/posix_time_duration.hpp>
15
 
#include <boost/date_time/filetime_functions.hpp>
16
 
#include <boost/date_time/c_time.hpp>
17
 
#include <boost/date_time/time_resolution_traits.hpp> // absolute_value
18
 
#include <boost/date_time/gregorian/conversion.hpp>
19
 
 
20
 
namespace boost {
21
 
 
22
 
namespace posix_time {
23
 
 
24
 
 
25
 
  //! Function that converts a time_t into a ptime.
26
 
  inline
27
 
  ptime from_time_t(std::time_t t)
28
 
  {
29
 
    ptime start(gregorian::date(1970,1,1));
30
 
    return start + seconds(static_cast<long>(t));
31
 
  }
32
 
 
33
 
  //! Convert a time to a tm structure truncating any fractional seconds
34
 
  inline
35
 
  std::tm to_tm(const boost::posix_time::ptime& t) {
36
 
    std::tm timetm = boost::gregorian::to_tm(t.date());
37
 
    boost::posix_time::time_duration td = t.time_of_day();
38
 
    timetm.tm_hour = td.hours();
39
 
    timetm.tm_min = td.minutes();
40
 
    timetm.tm_sec = td.seconds();
41
 
    timetm.tm_isdst = -1; // -1 used when dst info is unknown
42
 
    return timetm;
43
 
  }
44
 
  //! Convert a time_duration to a tm structure truncating any fractional seconds and zeroing fields for date components
45
 
  inline
46
 
  std::tm to_tm(const boost::posix_time::time_duration& td) {
47
 
    std::tm timetm;
48
 
    std::memset(&timetm, 0, sizeof(timetm));
49
 
    timetm.tm_hour = date_time::absolute_value(td.hours());
50
 
    timetm.tm_min = date_time::absolute_value(td.minutes());
51
 
    timetm.tm_sec = date_time::absolute_value(td.seconds());
52
 
    timetm.tm_isdst = -1; // -1 used when dst info is unknown
53
 
    return timetm;
54
 
  }
55
 
 
56
 
  //! Convert a tm struct to a ptime ignoring is_dst flag
57
 
  inline
58
 
  ptime ptime_from_tm(const std::tm& timetm) {
59
 
    boost::gregorian::date d = boost::gregorian::date_from_tm(timetm);
60
 
    return ptime(d, time_duration(timetm.tm_hour, timetm.tm_min, timetm.tm_sec));
61
 
  }
62
 
 
63
 
 
64
 
#if defined(BOOST_HAS_FTIME)
65
 
 
66
 
  //! Function to create a time object from an initialized FILETIME struct.
67
 
  /*! Function to create a time object from an initialized FILETIME struct.
68
 
   * A FILETIME struct holds 100-nanosecond units (0.0000001). When
69
 
   * built with microsecond resolution the FILETIME's sub second value
70
 
   * will be truncated. Nanosecond resolution has no truncation.
71
 
   *
72
 
   * \note FILETIME is part of the Win32 API, so it is not portable to non-windows
73
 
   * platforms.
74
 
   *
75
 
   * \note The function is templated on the FILETIME type, so that
76
 
   *       it can be used with both native FILETIME and the ad-hoc
77
 
   *       boost::date_time::winapi::file_time type.
78
 
   */
79
 
  template< typename TimeT, typename FileTimeT >
80
 
  inline
81
 
  TimeT from_ftime(const FileTimeT& ft)
82
 
  {
83
 
    return boost::date_time::time_from_ftime<TimeT>(ft);
84
 
  }
85
 
 
86
 
#endif // BOOST_HAS_FTIME
87
 
 
88
 
} } //namespace boost::posix_time
89
 
 
90
 
 
91
 
 
92
 
 
93
 
#endif
94