Clarify how two digit years are parsed by QDateTime::fromString().
[qt:qtbase.git] / src / corelib / doc / snippets / code / src_corelib_tools_qdatetime.cpp
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the documentation of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:BSD$
9 ** You may use this file under the terms of the BSD license as follows:
10 **
11 ** "Redistribution and use in source and binary forms, with or without
12 ** modification, are permitted provided that the following conditions are
13 ** met:
14 **   * Redistributions of source code must retain the above copyright
15 **     notice, this list of conditions and the following disclaimer.
16 **   * Redistributions in binary form must reproduce the above copyright
17 **     notice, this list of conditions and the following disclaimer in
18 **     the documentation and/or other materials provided with the
19 **     distribution.
20 **   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
21 **     of its contributors may be used to endorse or promote products derived
22 **     from this software without specific prior written permission.
23 **
24 **
25 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
36 **
37 ** $QT_END_LICENSE$
38 **
39 ****************************************************************************/
40
41 //! [0]
42 QDate d1(1995, 5, 17);  // May 17, 1995
43 QDate d2(1995, 5, 20);  // May 20, 1995
44 d1.daysTo(d2);          // returns 3
45 d2.daysTo(d1);          // returns -3
46 //! [0]
47
48
49 //! [1]
50 QDate date = QDate::fromString("1MM12car2003", "d'MM'MMcaryyyy");
51 // date is 1 December 2003
52 //! [1]
53
54
55 //! [2]
56 QDate date = QDate::fromString("130", "Md"); // invalid
57 //! [2]
58
59
60 //! [3]
61 QDate::fromString("1.30", "M.d");           // January 30 1900
62 QDate::fromString("20000110", "yyyyMMdd");  // January 10, 2000
63 QDate::fromString("20000110", "yyyyMd");    // January 10, 2000
64 //! [3]
65
66
67 //! [4]
68 QDate::isValid(2002, 5, 17);  // true
69 QDate::isValid(2002, 2, 30);  // false (Feb 30 does not exist)
70 QDate::isValid(2004, 2, 29);  // true (2004 is a leap year)
71 QDate::isValid(2000, 2, 29);  // true (2000 is a leap year)
72 QDate::isValid(2006, 2, 29);  // false (2006 is not a leap year)
73 QDate::isValid(2100, 2, 29);  // false (2100 is not a leap year)
74 QDate::isValid(1202, 6, 6);   // true (even though 1202 is pre-Gregorian)
75 //! [4]
76
77
78 //! [5]
79 QTime n(14, 0, 0);                // n == 14:00:00
80 QTime t;
81 t = n.addSecs(70);                // t == 14:01:10
82 t = n.addSecs(-70);               // t == 13:58:50
83 t = n.addSecs(10 * 60 * 60 + 5);  // t == 00:00:05
84 t = n.addSecs(-15 * 60 * 60);     // t == 23:00:00
85 //! [5]
86
87
88 //! [6]
89 QTime time = QTime::fromString("1mm12car00", "m'mm'hcarss");
90 // time is 12:01.00
91 //! [6]
92
93
94 //! [7]
95 QTime time = QTime::fromString("00:710", "hh:ms"); // invalid
96 //! [7]
97
98
99 //! [8]
100 QTime time = QTime::fromString("1.30", "m.s");
101 // time is 00:01:30.000
102 //! [8]
103
104
105 //! [9]
106 QTime::isValid(21, 10, 30); // returns true
107 QTime::isValid(22, 5,  62); // returns false
108 //! [9]
109
110
111 //! [10]
112 QTime t;
113 t.start();
114 some_lengthy_task();
115 qDebug("Time elapsed: %d ms", t.elapsed());
116 //! [10]
117
118
119 //! [11]
120 QDateTime now = QDateTime::currentDateTime();
121 QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0));
122 qDebug("There are %d seconds to Christmas", now.secsTo(xmas));
123 //! [11]
124
125
126 //! [12]
127 QTime time1 = QTime::fromString("131", "HHh");
128 // time1 is 13:00:00
129 QTime time1 = QTime::fromString("1apA", "1amAM");
130 // time1 is 01:00:00
131
132 QDateTime dateTime2 = QDateTime::fromString("M1d1y9800:01:02",
133                                             "'M'M'd'd'y'yyhh:mm:ss");
134 // dateTime is 1 January 1998 00:01:02
135 //! [12]
136
137
138 //! [13]
139 QDateTime dateTime = QDateTime::fromString("130", "Mm"); // invalid
140 //! [13]
141
142
143 //! [14]
144 QDateTime dateTime = QDateTime::fromString("1.30.1", "M.d.s");
145 // dateTime is January 30 in 1900 at 00:00:01.
146 dateTime = QDateTime::fromString("12", "yy");
147 // dateTime is January 1 in 1912 at 00:00:00.
148 //! [14]
149
150 //! [15]
151 QDateTime startDate(QDate(2012, 7, 6), QTime(8, 30, 0));
152 QDateTime endDate(QDate(2012, 7, 7), QTime(16, 30, 0));
153 qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);
154
155 startDate = QDateTime(QDate(2012, 7, 6), QTime(23, 55, 0));
156 endDate = QDateTime(QDate(2012, 7, 7), QTime(0, 5, 0));
157 qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);
158
159 qSwap(startDate, endDate); // Make endDate before startDate.
160 qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);
161 //! [15]
162
163 //! [16]
164 QDateTime local(QDateTime::currentDateTime());
165 QDateTime UTC(local.toTimeSpec(Qt::UTC));
166 qDebug() << "Local time is:" << local;
167 qDebug() << "UTC time is:" << UTC;
168 qDebug() << "No difference between times:" << local.secsTo(UTC);
169 //! [16]
170
171 //! [17]
172 QDateTime UTC(QDateTime::currentDateTimeUtc());
173 QDateTime local(UTC.toLocalTime());
174 qDebug() << "UTC time is:" << UTC;
175 qDebug() << "Local time is:" << local;
176 qDebug() << "No difference between times:" << UTC.secsTo(local);
177 //! [17]
178
179 //! [18]
180 QDateTime local(QDateTime::currentDateTime());
181 QDateTime UTC(local.toUTC());
182 qDebug() << "Local time is:" << local;
183 qDebug() << "UTC time is:" << UTC;
184 qDebug() << "No difference between times:" << local.secsTo(UTC);
185 //! [18]
186
187 //! [19]
188 QDateTime local(QDateTime::currentDateTime());
189 qDebug() << "Local time is:" << local;
190
191 QDateTime UTC(local);
192 UTC.setTimeSpec(Qt::UTC);
193 qDebug() << "UTC time is:" << UTC;
194
195 qDebug() << "There are" << local.secsTo(UTC) << "seconds difference between the datetimes.";
196 //! [19]
197
198 //! [20]
199 QString string = "Monday, 23 April 12 22:51:41";
200 QString format = "dddd, d MMMM yy hh:mm:ss";
201 QDateTime invalid = QDateTime::fromString(string, format);
202 //! [20]
203
204 //! [21]
205 QString string = "Tuesday, 23 April 12 22:51:41";
206 QString format = "dddd, d MMMM yy hh:mm:ss";
207 QDateTime valid = QDateTime::fromString(string, format);
208 //! [21]