OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright (C) 1999-2000 Harri Porten (porten@kde.org) | |
3 * Copyright (C) 2006, 2007 Apple Inc. All rights reserved. | |
4 * Copyright (C) 2009 Google Inc. All rights reserved. | |
5 * Copyright (C) 2010 Research In Motion Limited. All rights reserved. | |
6 * | |
7 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 | |
8 * | |
9 * The contents of this file are subject to the Mozilla Public License Version | |
10 * 1.1 (the "License"); you may not use this file except in compliance with | |
11 * the License. You may obtain a copy of the License at | |
12 * http://www.mozilla.org/MPL/ | |
13 * | |
14 * Software distributed under the License is distributed on an "AS IS" basis, | |
15 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License | |
16 * for the specific language governing rights and limitations under the | |
17 * License. | |
18 * | |
19 * The Original Code is Mozilla Communicator client code, released | |
20 * March 31, 1998. | |
21 * | |
22 * The Initial Developer of the Original Code is | |
23 * Netscape Communications Corporation. | |
24 * Portions created by the Initial Developer are Copyright (C) 1998 | |
25 * the Initial Developer. All Rights Reserved. | |
26 * | |
27 * Contributor(s): | |
28 * | |
29 * Alternatively, the contents of this file may be used under the terms of | |
30 * either of the GNU General Public License Version 2 or later (the "GPL"), | |
31 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), | |
32 * in which case the provisions of the GPL or the LGPL are applicable instead | |
33 * of those above. If you wish to allow use of your version of this file only | |
34 * under the terms of either the GPL or the LGPL, and not to allow others to | |
35 * use your version of this file under the terms of the MPL, indicate your | |
36 * decision by deleting the provisions above and replace them with the notice | |
37 * and other provisions required by the GPL or the LGPL. If you do not delete | |
38 * the provisions above, a recipient may use your version of this file under | |
39 * the terms of any one of the MPL, the GPL or the LGPL. | |
40 * | |
41 */ | |
42 | |
43 #ifndef DateMath_h | |
44 #define DateMath_h | |
45 | |
46 #include <math.h> | |
47 #include <stdint.h> | |
48 #include <string.h> | |
49 #include <time.h> | |
50 #include <wtf/CurrentTime.h> | |
51 #include <wtf/Noncopyable.h> | |
52 #include <wtf/OwnArrayPtr.h> | |
53 #include <wtf/PassOwnArrayPtr.h> | |
54 #include <wtf/text/WTFString.h> | |
55 #include <wtf/UnusedParam.h> | |
56 | |
57 namespace WTF { | |
58 | |
59 void initializeDates(); | |
60 int equivalentYearForDST(int year); | |
61 | |
62 // Not really math related, but this is currently the only shared place to put t
hese. | |
63 double parseES5DateFromNullTerminatedCharacters(const char* dateString); | |
64 WTF_EXPORT_PRIVATE double parseDateFromNullTerminatedCharacters(const char* date
String); | |
65 double parseDateFromNullTerminatedCharacters(const char* dateString, bool& haveT
Z, int& offset); | |
66 double timeClip(double); | |
67 // dayOfWeek: [0, 6] 0 being Monday, day: [1, 31], month: [0, 11], year: ex: 201
1, hours: [0, 23], minutes: [0, 59], seconds: [0, 59], utcOffset: [-720,720]. | |
68 String makeRFC2822DateString(unsigned dayOfWeek, unsigned day, unsigned month, u
nsigned year, unsigned hours, unsigned minutes, unsigned seconds, int utcOffset)
; | |
69 | |
70 inline double jsCurrentTime() | |
71 { | |
72 // JavaScript doesn't recognize fractions of a millisecond. | |
73 return floor(WTF::currentTimeMS()); | |
74 } | |
75 | |
76 const char* const weekdayName[7] = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "
Sun" }; | |
77 const char* const monthName[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "J
ul", "Aug", "Sep", "Oct", "Nov", "Dec" }; | |
78 const char* const monthFullName[12] = { "January", "February", "March", "April",
"May", "June", "July", "August", "September", "October", "November", "December"
}; | |
79 | |
80 const double hoursPerDay = 24.0; | |
81 const double minutesPerHour = 60.0; | |
82 const double secondsPerHour = 60.0 * 60.0; | |
83 const double secondsPerMinute = 60.0; | |
84 const double msPerSecond = 1000.0; | |
85 const double msPerMinute = 60.0 * 1000.0; | |
86 const double msPerHour = 60.0 * 60.0 * 1000.0; | |
87 const double msPerDay = 24.0 * 60.0 * 60.0 * 1000.0; | |
88 const double msPerMonth = 2592000000.0; | |
89 | |
90 bool isLeapYear(int year); | |
91 | |
92 // Returns the number of days from 1970-01-01 to the specified date. | |
93 WTF_EXPORT_PRIVATE double dateToDaysFrom1970(int year, int month, int day); | |
94 WTF_EXPORT_PRIVATE int msToYear(double ms); | |
95 double msToDays(double ms); | |
96 int msToMinutes(double ms); | |
97 int msToHours(double ms); | |
98 int dayInYear(int year, int month, int day); | |
99 WTF_EXPORT_PRIVATE int dayInYear(double ms, int year); | |
100 WTF_EXPORT_PRIVATE int monthFromDayInYear(int dayInYear, bool leapYear); | |
101 WTF_EXPORT_PRIVATE int dayInMonthFromDayInYear(int dayInYear, bool leapYear); | |
102 | |
103 // Returns offset milliseconds for UTC and DST. | |
104 WTF_EXPORT_PRIVATE int32_t calculateUTCOffset(); | |
105 WTF_EXPORT_PRIVATE double calculateDSTOffset(double ms, double utcOffset); | |
106 | |
107 } // namespace WTF | |
108 | |
109 using WTF::isLeapYear; | |
110 using WTF::dateToDaysFrom1970; | |
111 using WTF::dayInMonthFromDayInYear; | |
112 using WTF::dayInYear; | |
113 using WTF::minutesPerHour; | |
114 using WTF::monthFromDayInYear; | |
115 using WTF::msPerDay; | |
116 using WTF::msPerHour; | |
117 using WTF::msPerMinute; | |
118 using WTF::msPerSecond; | |
119 using WTF::msToYear; | |
120 using WTF::msToDays; | |
121 using WTF::msToMinutes; | |
122 using WTF::msToHours; | |
123 using WTF::secondsPerMinute; | |
124 using WTF::parseDateFromNullTerminatedCharacters; | |
125 using WTF::makeRFC2822DateString; | |
126 using WTF::calculateUTCOffset; | |
127 using WTF::calculateDSTOffset; | |
128 | |
129 #endif // DateMath_h | |
OLD | NEW |