File: DateTimeFormat.h

package info (click to toggle)
poco 1.14.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 56,460 kB
  • sloc: cpp: 340,542; ansic: 245,601; makefile: 1,742; yacc: 1,005; sh: 698; sql: 312; lex: 282; xml: 128; perl: 29; python: 24
file content (140 lines) | stat: -rw-r--r-- 3,554 bytes parent folder | download
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
//
// DateTimeFormat.h
//
// Library: Foundation
// Package: DateTime
// Module:  DateTimeFormat
//
// Definition of the DateTimeFormat class.
//
// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// SPDX-License-Identifier:	BSL-1.0
//


#ifndef Foundation_DateTimeFormat_INCLUDED
#define Foundation_DateTimeFormat_INCLUDED


#include "Poco/Foundation.h"
#include <unordered_set>


namespace Poco {


class RegularExpression;


class Foundation_API DateTimeFormat
	/// Definition of date/time formats and various
	/// constants used by DateTimeFormatter and DateTimeParser.
{
public:

	// predefined date formats
	static const std::string ISO8601_FORMAT;
		/// The date/time format defined in the ISO 8601 standard.
		///
		/// Examples:
		///   2005-01-01T12:00:00+01:00
		///   2005-01-01T11:00:00Z

	static const std::string ISO8601_REGEX;

	static const std::string ISO8601_FRAC_FORMAT;
		/// The date/time format defined in the ISO 8601 standard,
		/// with fractional seconds.
		///
		/// Examples:
		///   2005-01-01T12:00:00.000000+01:00
		///   2005-01-01T11:00:00.000000Z

	static const std::string RFC822_FORMAT;
		/// The date/time format defined in RFC 822 (obsoleted by RFC 1123).
		///
		/// Examples:
		///   Sat, 1 Jan 05 12:00:00 +0100
		///   Sat, 1 Jan 05 11:00:00 GMT

	static const std::string RFC822_REGEX;

	static const std::string RFC1123_FORMAT;
		/// The date/time format defined in RFC 1123 (obsoletes RFC 822).
		///
		/// Examples:
		///   Sat, 1 Jan 2005 12:00:00 +0100
		///   Sat, 1 Jan 2005 11:00:00 GMT

	static const std::string RFC1123_REGEX;

	static const std::string HTTP_FORMAT;
		/// The date/time format defined in the HTTP specification (RFC 2616),
		/// which is basically a variant of RFC 1036 with a zero-padded day field.
		///
		/// Examples:
		///   Sat, 01 Jan 2005 12:00:00 +0100
		///   Sat, 01 Jan 2005 11:00:00 GMT

	static const std::string HTTP_REGEX;

	static const std::string RFC850_FORMAT;
		/// The date/time format defined in RFC 850 (obsoleted by RFC 1036).
		///
		/// Examples:
		///   Saturday, 1-Jan-05 12:00:00 +0100
		///   Saturday, 1-Jan-05 11:00:00 GMT

	static const std::string RFC850_REGEX;

	static const std::string RFC1036_FORMAT;
		/// The date/time format defined in RFC 1036 (obsoletes RFC 850).
		///
		/// Examples:
		///   Saturday, 1 Jan 05 12:00:00 +0100
		///   Saturday, 1 Jan 05 11:00:00 GMT

	static const std::string RFC1036_REGEX;

	static const std::string ASCTIME_FORMAT;
		/// The date/time format produced by the ANSI C asctime() function.
		///
		/// Example:
		///   Sat Jan  1 12:00:00 2005

	static const std::string ASCTIME_REGEX;

	static const std::string SORTABLE_FORMAT;
		/// A simple, sortable date/time format.
		///
		/// Example:
		///   2005-01-01 12:00:00

	static const std::string SORTABLE_REGEX;
	// ^(\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)$

	// names used by formatter and parser
	static const std::string WEEKDAY_NAMES[7];
		/// English names of week days (Sunday, Monday, Tuesday, ...).

	static const std::string MONTH_NAMES[12];
		/// English names of months (January, February, ...).

	static bool hasFormat(const std::string& fmt);
		/// Returns true if fmt is a known standard format.

	static bool isValid(const std::string& dateTime);
		/// Returns true if dateTime validates against at least one supported format.

private:
	typedef std::unordered_set<std::string> Formatlist;
	static Formatlist FORMAT_LIST;
};


} // namespace Poco


#endif // Foundation_DateTimeFormat_INCLUDED