123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- INFORMATION FOR DEVELOPERS
- Once the Date API is installed, all functions in the API are available to be
- used anywhere by any module.
- The API uses the PHP 5.2 date functions to create and manipulate dates.
- Example, the following will create a date for the local value in one
- timezone, adjust it to a different timezone, then return the offset in seconds
- in the new timezone for the input date; The offset will be adjusted for both
- the timezone difference and daylight savings time, if necessary:
- $date = date_create('2007-03-11 02:00:00', timezone_open('America/Chicago'));
- $chicago_time = date_format($date, 'Y-m-d H:i');
- print 'At '. $chicago_time .' in Chicago, the timezone offset in seconds
- was '. date_offset_get($date);
- date_timezone_set($date, timezone_open('Europe/Berlin');
- $berlin_time = date_format($date, 'Y-m-d H:i');
- print 'It was '. $berlin_time .' in Berlin when it
- was '. $chicago_time .' in Chicago.';
- print 'At that time in Berlin, the timezone offset in seconds was
- '. date_offset_get($date);
- A helper class is available, new DateObject($string, $timezone, $format), where
- $string is a unixtimestamp, an ISO date, or a string like YYYY-MM-DD HH:MM:SS,
- $timezone is the name of the timezone this date is in, and $format is the format
- of date it is (DATE_FORMAT_UNIX, DATE_FORMAT_ISO, or DATE_FORMAT_DATETIME). It
- creates and return a date object set to the right date and timezone.
- Simpletest tests for these functions are included in the package.
- Available functions include the following (more documentation is provided in
- the files):
- ============================================================================
- Preconfigured arrays
- ============================================================================
- Both translated and untranslated values are available. The
- date_week_days_ordered() function will shift an array of week day names so it
- starts with the site's first day of the week, otherwise the weekday names start
- with Sunday as the first value, which is the expected order for many php and sql
- functions.
- date_month_names();
- date_month_names_abbr();
- date_month_names_untranslated();
- date_week_days();
- date_week_days_abbr();
- date_week_days_untranslated();
- date_week_days_ordered();
- date_years();
- date_hours();
- date_minutes();
- date_seconds();
- date_timezone_names();
- date_ampm();
- ============================================================================
- Miscellaneous date manipulation functions
- ============================================================================
- Pre-defined constants and functions that will handle pre-1970 and post-2038
- dates in both PHP 4 and PHP 5, in any OS. Dates can be converted from one
- type to another and date parts can be extracted from any date type.
- DATE_DATETIME
- DATE_ISO
- DATE_UNIX
- DATE_ARRAY
- DATE_OBJECT
- DATE_ICAL
- date_convert()
- date_is_valid();
- date_part_is_valid();
- date_part_extract();
- ============================================================================
- Date calculation and navigation
- ============================================================================
- date_difference() will find the time difference between any two days, measured
- in seconds, minutes, hours, days, months, weeks, or years.
- date_days_in_month();
- date_days_in_year();
- date_weeks_in_year();
- date_last_day_of_month();
- date_day_of_week();
- date_day_of_week_name();
- date_difference();
- ============================================================================
- Date regex and format helpers
- ============================================================================
- Pre-defined constants, an array of date format strings and their
- equivalent regex strings.
- DATE_REGEX_LOOSE is a very loose regex that will pull date parts out
- of an ISO date with or without separators, using either 'T' or a space
- to separate date and time, and with or without time.
- date_format_date() is similar to format_date(), except it takes a
- date object instead of a timestamp as the first parameter.
- DATE_FORMAT_ISO
- DATE_FORMAT_DATETIME
- DATE_FORMAT_UNIX
- DATE_FORMAT_ICAL
- DATE_REGEX_ISO
- DATE_REGEX_DATETIME
- DATE_REGEX_LOOSE
- date_format_date();
- date_short_formats();
- date_medium_formats();
- date_long_formats();
- date_format_patterns();
- ============================================================================
- Standardized ical parser and creator
- ============================================================================
- The iCal parser is found in date_api_ical.inc, which is not included by default.
- Include that file if you want to use these functions:
- Complete rewrite of ical imports to parse vevents, vlocations, valarms,
- and all kinds of timezone options and repeat rules for ical imports.
- The function now sticks to parsing the ical into an array that can be used
- in various ways. It no longer trys to convert timezones while parsing,
- instead a date_ical_date_format() function is provided that can be used to
- convert from the ical timezone to whatever timezone is desired in the
- results. Repeat rules are parsed into an array which other modules can
- manipulate however they like to create additional events from the results.
- date_ical_export();
- date_ical_import();
- date_ical_date_format();
- ============================================================================
- Helpers for portable date SQL
- ============================================================================
- The SQL functions are found in date_api_sql.inc, which is not included by
- default. Include that file if you want to use these functions:
- date_sql();
- date_server_zone_adj();
- date_sql_concat();
- date_sql_pad();
- ============================================================================
- Date forms and validators
- ============================================================================
- Reusable, configurable, self-validating FAPI date elements are found in
- date_api_elements.inc, which is not included by default. Include it
- if you want to use these elements. To use them, create a form element
- and set the '#type' to one of the following:
- date_select
- The date_select element will create a collection of form elements, with a
- separate select or textfield for each date part. The whole collection will
- get reformatted back into a date value of the requested type during validation.
- date_text
- The date_text element will create a textfield that can contain a whole
- date or any part of a date as text. The user input value will be re-formatted
- back into a date value of the requested type during validation.
- date_timezone
- The date_timezone element will create a drop-down selector to pick a
- timezone name.
- The custom date elements require a few other pieces of information to work
- correctly, like #date_format and #date_type. See the internal documentation
- for more information.
- ============================================================================
- Date Popup Module
- ============================================================================
- A new module is included in the package that will enable a popup jQuery
- calendar date picker and timepicker in date and time fields.
- It is implemented as a custom form element, so set '#type' to 'date_popup'
- to use this element. See the internal documentation for more information.
- ============================================================================
- Date Repeat API
- ============================================================================
- An API for repeating dates is available if installed. It can be used by
- other modules to create a form element that will allow users to select
- repeat rules and store those selections in an iCal RRULE string, and a
- calculation function that will parse the RRULE and return an array of dates
- that match those rules. The API is implemented in the Date module as a
- new date widget if the Date Repeat API is installed.
- ============================================================================
- RDF Integration
- ============================================================================
- To make RDF easier to use, the base date themes (date_display_single and
- date_display_range) have been expanded so they pass attributes and
- RDF mappings for the field, if any, to the theme. If RDF is installed
- and no other mappings are provided, the theme adds RDF information
- to mark both the Start and End dates as 'xsd:dateTime' datatypes with the
- property of 'dc:date'. This occurs in the theme preprocess layer, in
- particular via the functions template_preprocess_date_display_single() and
- template_preprocess_date_display_range().
- To mark these as events instead, you could install the schemaorg
- module, which will load the schema.org vocabulary. The mark the content type
- that contains events as an 'Event', using the UI exposed by that
- module and set the event start date field with the 'dateStart'
- property and tag other fields in the content type with the appropriate
- property types. The Date module theme will wrap the start and end
- date output with appropriate markup.
- If the result is not quite what you need, you should be able to implement your
- own theme preprocess functions, e.g. MYTHEME_preprocess_date_display_single()
- or MYTHEME_preprocess_date_display_range() and alter the attributes to use the
- values you want.
|