Projet

Général

Profil

Paste
Télécharger (8,97 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / date / date_api / README.txt @ 599a39cd

1
Date API
2
--------
3
Once the Date API is installed, all functions in the API are available to be
4
used anywhere by any module.
5

    
6
The API uses the PHP 5.2 date functions to create and manipulate dates.
7

    
8
Example, the following will create a date for the local value in one
9
timezone, adjust it to a different timezone, then return the offset in seconds
10
in the new timezone for the input date; The offset will be adjusted for both
11
the timezone difference and daylight savings time, if necessary:
12

    
13
$date = date_create('2007-03-11 02:00:00', timezone_open('America/Chicago'));
14
$chicago_time = date_format($date, 'Y-m-d H:i');
15

    
16
print 'At '. $chicago_time .' in Chicago, the timezone offset in seconds
17
  was '. date_offset_get($date);
18

    
19
date_timezone_set($date, timezone_open('Europe/Berlin');
20
$berlin_time = date_format($date, 'Y-m-d H:i');
21

    
22
print 'It was '. $berlin_time .' in Berlin when it
23
  was '. $chicago_time .' in Chicago.';
24
print 'At that time in Berlin, the timezone offset in seconds was
25
  '. date_offset_get($date);
26

    
27
A helper class is available, new DateObject($string, $timezone, $format), where
28
$string is a unixtimestamp, an ISO date, or a string like YYYY-MM-DD HH:MM:SS,
29
$timezone is the name of the timezone this date is in, and $format is the format
30
of date it is (DATE_FORMAT_UNIX, DATE_FORMAT_ISO, or DATE_FORMAT_DATETIME). It
31
creates and return a date object set to the right date and timezone.
32

    
33
Simpletest tests for these functions are included in the package.
34

    
35
Available functions include the following (more documentation is provided in
36
the files).
37

    
38

    
39
Preconfigured arrays
40
--------------------------------------------------------------------------------
41
Both translated and untranslated values are available.  For example the
42
'date_week_days_ordered()' function will shift an array of week day names so it
43
starts with the site's first day of the week, otherwise the weekday names start
44
with Sunday as the first value, which is the expected order for many php and sql
45
functions.
46

    
47
date_month_names();
48
date_month_names_abbr();
49
date_month_names_untranslated();
50
date_week_days();
51
date_week_days_abbr();
52
date_week_days_untranslated();
53
date_week_days_ordered();
54
date_years();
55
date_hours();
56
date_minutes();
57
date_seconds();
58
date_timezone_names();
59
date_timezone_abbr();
60
date_timezone_is_valid();
61
date_default_timezone();
62
date_default_timezone_object();
63
date_ampm();
64
date_hidden_element();
65
date_granularity_names();
66
date_granularity_sorted();
67
date_granularity_array_from_precision();
68
date_granularity_precision();
69
date_granularity_format();
70
date_now();
71

    
72

    
73
Miscellaneous date manipulation functions
74
--------------------------------------------------------------------------------
75
Pre-defined constants and functions that will handle pre-1970 and post-2038
76
dates in both PHP 4 and PHP 5, in any OS. Dates can be converted from one
77
type to another and date parts can be extracted from any date type.
78

    
79
DATE_DATETIME
80
DATE_ISO
81
DATE_UNIX
82
DATE_ARRAY
83
DATE_OBJECT
84
DATE_ICAL
85

    
86
date_is_all_day();
87
date_increment_round();
88
date_is_date();
89
date_pad();
90
date_has_time();
91
date_has_date();
92
date_part_format();
93
date_limit_format();
94
date_nongranularity();
95
date_order_translated();
96
date_order();
97
date_range_valid();
98
date_range_years();
99
date_range_string();
100
date_format_type_options();
101
date_example_date();
102
date_is_all_day();
103
date_increment_round();
104
date_make_iso_valid();
105

    
106

    
107
Date calculation and navigation
108
--------------------------------------------------------------------------------
109
For example 'date_days_in_month()' identifies the number of days in a month for
110
a date.
111

    
112
date_days_in_month();
113
date_days_in_year();
114
date_iso_weeks_in_year();
115
date_iso_week_range();
116
date_weeks_in_year();
117
date_day_of_week();
118
date_day_of_week_name();
119
date_week_range();
120
date_week();
121
date_get_timezone();
122
date_get_timezone_db();
123

    
124

    
125
Date regex and format helpers
126
--------------------------------------------------------------------------------
127
Pre-defined constants, an array of date format strings and their
128
equivalent regex strings.
129

    
130
DATE_REGEX_LOOSE is a very loose regex that will pull date parts out
131
of an ISO date with or without separators, using either 'T' or a space
132
to separate date and time, and with or without time.
133

    
134
'date_format_date()'' is similar to 'format_date()', except it takes a
135
date object instead of a timestamp as the first parameter.
136

    
137
DATE_FORMAT_ISO
138
DATE_FORMAT_DATETIME
139
DATE_FORMAT_UNIX
140
DATE_FORMAT_ICAL
141

    
142
DATE_REGEX_ISO
143
DATE_REGEX_DATETIME
144
DATE_REGEX_LOOSE
145

    
146
date_format_date();
147
date_format_patterns();
148
date_format_interval();
149
date_format_order();
150
date_format_type_options();
151
date_type_format();
152

    
153

    
154
Standardized ical parser and creator
155
--------------------------------------------------------------------------------
156
The iCal parser is found in 'date_api_ical.inc', which is not included by
157
default. Include that file if you want to use these functions:
158

    
159
Complete rewrite of ical imports to parse vevents, vlocations, valarms,
160
and all kinds of timezone options and repeat rules for ical imports.
161
The function now sticks to parsing the ical into an array that can be used
162
in various ways. It no longer trys to convert timezones while parsing instead a
163
'date_ical_date()' function is provided that can be used to convert from the
164
ical timezone to the local timezone.
165
iCal properties can be parsed into an array which other modules can manipulate
166
however they like to create additional events from the results.
167
The function 'date_api_ical_build_rrule()'' can be used to build an iCal RULE
168
from $form_values.
169

    
170
date_ical_import();
171
date_ical_parse();
172
date_ical_parse_date();
173
date_ical_parse_rrule();
174
date_ical_parse_exceptions();
175
date_ical_parse_duration();
176
date_ical_parse_text();
177
date_ical_parse_location();
178
date_ical_date();
179
date_ical_escape_text();
180
date_api_ical_build_rrule();
181

    
182

    
183
Helpers for portable date SQL
184
--------------------------------------------------------------------------------
185
The SQL functions are found in date_api_sql.inc, which is not included by
186
default. Include that file if you want to use these functions:
187

    
188
date_sql_concat();
189
date_sql_coalesce();
190
date_sql_pad();
191

    
192

    
193
Date forms and validators
194
--------------------------------------------------------------------------------
195
Reusable, configurable, self-validating FAPI date elements are found in
196
date_api_elements.inc, which is not included by default. Include it if you want
197
to use these elements. To use them, create a form element and set the '#type'
198
to one of the following:
199

    
200
date_select
201
  The date_select element will create a collection of form elements, with a
202
  separate select or textfield for each date part. The whole collection will
203
  get reformatted back into a date value of the requested type during
204
  validation.
205

    
206
date_text
207
  The date_text element will create a textfield that can contain a whole date
208
  or any part of a date as text. The user input value will be re-formatted back
209
  into a date value of the requested type during validation.
210

    
211
date_timezone
212
  The date_timezone element will create a drop-down selector to pick a timezone
213
  name.
214

    
215
The custom date elements require a few other pieces of information to work
216
correctly, like #date_format and #date_type. See the internal documentation
217
for more information.
218

    
219

    
220
Date Repeat API
221
--------------------------------------------------------------------------------
222
An API for repeating dates is available if installed. It can be used by other
223
modules to create a form element that will allow users to select repeat rules
224
and store those selections in an iCal RRULE string, and a calculation function
225
that will parse the RRULE and return an array of dates that match those rules.
226
The API is implemented in the Date module as a new date widget if the Date
227
Repeat API is installed.
228

    
229

    
230
RDF Integration
231
--------------------------------------------------------------------------------
232
To make RDF easier to use, the base date themes ('date_display_single' and
233
'date_display_range') have been expanded so they pass attributes and RDF
234
mappings for the field, if any, to the theme. If RDF is installed and no other
235
mappings are provided, the theme adds RDF information to mark both the Start
236
and End dates as 'xsd:dateTime' datatypes with the property of 'dc:date'. This
237
occurs in the theme preprocess layer, in particular via the functions
238
'template_preprocess_date_display_single()' and
239
'template_preprocess_date_display_range()'.
240

    
241
To mark these as events instead, you could install the schemaorg module [1],
242
which will load the schema.org vocabulary. The mark the content type that
243
contains events as an 'Event', using the UI exposed by that module and set the
244
event start date field with the 'dateStart' property and tag other fields in the
245
content type with the appropriate property types. The Date module theme will
246
wrap the start and end date output with appropriate markup.
247

    
248
If the result is not quite what you need, you should be able to implement your
249
own theme preprocess functions, e.g. 'MYTHEME_preprocess_date_display_single()'
250
or 'MYTHEME_preprocess_date_display_range()' and alter the attributes to use the
251
values you want.
252

    
253

    
254
References
255
--------------------------------------------------------------------------------
256
1: https://www.drupal.org/project/schemaorg