Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
C++ library for parsing datetime formatted string
C C++
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
examples
gtest
include
scripts
tests
.gitignore
CMakeLists.txt
Changes
LICENSE
README

README

=======================================================================
 DESCRIPTION
=======================================================================
This library allows you to parse datetime formatted string, easily.

=======================================================================
 SYNOPSIS
=======================================================================
 Two version is here
----------------------------------------------------------------------

// 1. datetimelite.h
//
// you can parse many kinds of datetime-formatted-string with
// 'time_from_string' function which returns struct tm.
//
// And if passed string has format that is not supported, it throws
// std::invalid_argument
//
// This has no dependency on boost

#include <datetimelite.h>

using namespace datetimelite;

struct std::tm ts = time_from_string("Wed, 09 Feb 1994 22:23:32 GMT"); // HTTP format
struct std::tm ts = time_from_string("Tuesday, 08-Feb-94 14:15:29 GMT"); // old rfc850 HTTP format
struct std::tm ts = time_from_string("Tuesday, 08-Feb-1994 14:15:29 GMT"); // broken rfc850
struct std::tm ts = time_from_string("03/Feb/1994:17:03:55 -0700"); // common log file format
struct std::tm ts = time_from_string("09 Feb 1994 22:23:32 GMT"); // HTTP format no weekday
struct std::tm ts = time_from_string("08-Feb-94 14:15:29 GMT"); // rfc850 no weekday
struct std::tm ts = time_from_string("08-Feb-1994 14:15:29 GMT"); // broken rfc850 no weekday

struct std::tm ts = time_from_string("1994-02-03 14:15:29 -0100"); // ISO8601
struct std::tm ts = time_from_string("1994-02-03 14:15:29"); // zone is optional
struct std::tm ts = time_from_string("1994-02-03"); // only date
struct std::tm ts = time_from_string("1994-02-03T14:15:29"); // use T separator
struct std::tm ts = time_from_string("19940203T141529Z"); // ISO8601 compact format
struct std::tm ts = time_from_string("19940203"); // only date

struct std::tm ts = time_from_string("08-Feb-94"); // old rfc850 no weekday, no time
struct std::tm ts = time_from_string("08-Feb-1994"); // broken rfc850 no weekday, no time
struct std::tm ts = time_from_string("09 Feb 1994"); // proposed new http format no weekday no time
struct std::tm ts = time_from_string("03/Feb/1994"); // common log file format no weekday, no time

try {
    struct std::tm ts = time_from_string("invalid format");
} catch (std::exception& e) {
    std::cout <<  "invalid format: " << e.what() << std::endl;
}


// 2. datetimelite2.h
//
// function name 'time_from_string' is same as above,
// but the behavior is different
//
// that returns boost::optional<boost::posix_time::ptime> object.
// So, if passed string has invalid-format, it doesn't throw, but 
// returns boost::none.
//
// Of cource, this header depends on boost_date_time library


#include <datetimelite2.h>
#include <boost/optional.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>

boost::optional<boost::posix_time::ptime> t = datetimelite2::time_from_string("1994-02-03T14:15:29");
if (t) {
    std::cout << boost::posix_time::to_simple_string(*p) << std::endl;
}


=======================================================================
 TODO
=======================================================================
More tests
ctime(3) format support
ANSI asctime format support
Unix 'ls -l' format support
Windows 'dir' format support

=======================================================================
 INSTALL
=======================================================================
This is header-only library.
So, copying datetimelite.h or datetimelite2.h into your project directory is the easiest way.

or

1. cd build
2. cmake .. -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release

parameters
    - BUILD_SHARED_LIBS (ON|OFF)
    - CMAKE_BUILD_TYPE (Debug|Release)
    - CMAKE_INSTALL_PREFIX (/usr/local)

3. make
4. make test
5. make install

Something went wrong with that request. Please try again.