Difference between revisions of "API:EPrints/Time"
Line 8: | Line 8: | ||
'''EPrints::Time''' - Time and Date-related functions | '''EPrints::Time''' - Time and Date-related functions | ||
− | |||
− | |||
<!-- Edit below this comment --> | <!-- Edit below this comment --> | ||
<!-- Pod2Wiki= --> | <!-- Pod2Wiki= --> | ||
− | |||
<!-- Pod2Wiki=head_synopsis --> | <!-- Pod2Wiki=head_synopsis --> | ||
==SYNOPSIS== | ==SYNOPSIS== | ||
− | + | <source lang="perl">($year) = EPrints::Time::utc_datetime() | |
− | + | # 2010 | |
− | + | ||
− | + | ($year,$month) = EPrints::Time::local_datetime() | |
− | + | # 2010, 6 | |
− | + | ||
− | + | EPrints::Time::iso_datetime(); | |
− | + | # 2008-05-15T14:40:24Z | |
− | + | ||
− | + | EPrints::Time::iso_date() | |
− | + | # 2010-06-23 | |
− | + | ||
− | + | EPrints::Time::month_label( $repo, 11 ) | |
− | + | # returns "November" | |
− | + | ||
− | + | EPrints::Time::short_month_label( $repo, 11 ) | |
− | + | # returns "Nov" | |
− | + | ||
− | + | EPrints::Time::render_date( $repo, "2001-01-12T00:00:00Z" ) | |
− | + | # returns XML containing 12 January 2001 00:00 | |
− | + | ||
− | + | EPrints::Time::render_short_date( $repo, "2001-01-12T00:00:00Z" ) | |
− | + | # returns XML containing 12 Jan 2001 00:00</source> | |
− | + | ||
− | < | ||
− | |||
<!-- Edit below this comment --> | <!-- Edit below this comment --> | ||
<!-- Pod2Wiki= --> | <!-- Pod2Wiki= --> | ||
− | |||
<!-- Pod2Wiki=head_description --> | <!-- Pod2Wiki=head_description --> | ||
==DESCRIPTION== | ==DESCRIPTION== | ||
This package contains functions related to time/date functionality. | This package contains functions related to time/date functionality. | ||
− | |||
− | |||
<!-- Edit below this comment --> | <!-- Edit below this comment --> | ||
<!-- Pod2Wiki= --> | <!-- Pod2Wiki= --> | ||
− | |||
<!-- Pod2Wiki=head_formats_used_in_eprints --> | <!-- Pod2Wiki=head_formats_used_in_eprints --> | ||
==FORMATS USED IN EPRINTS== | ==FORMATS USED IN EPRINTS== | ||
− | |||
− | |||
<!-- Edit below this comment --> | <!-- Edit below this comment --> | ||
<!-- Pod2Wiki= --> | <!-- Pod2Wiki= --> | ||
− | |||
<!-- Pod2Wiki=head_internal_format --> | <!-- Pod2Wiki=head_internal_format --> | ||
===Internal format=== | ===Internal format=== | ||
Line 76: | Line 64: | ||
These are used in the database and when setting and getting values. They can contain any fractional part of a date time. | These are used in the database and when setting and getting values. They can contain any fractional part of a date time. | ||
− | |||
− | |||
<!-- Edit below this comment --> | <!-- Edit below this comment --> | ||
<!-- Pod2Wiki= --> | <!-- Pod2Wiki= --> | ||
− | |||
<!-- Pod2Wiki=head_iso_8601_style_date_times --> | <!-- Pod2Wiki=head_iso_8601_style_date_times --> | ||
===ISO 8601-style date/times=== | ===ISO 8601-style date/times=== | ||
Line 91: | Line 76: | ||
These are primarily used in XML output where times that conform to the standard XSD date/time are required. | These are primarily used in XML output where times that conform to the standard XSD date/time are required. | ||
− | |||
− | |||
<!-- Edit below this comment --> | <!-- Edit below this comment --> | ||
<!-- Pod2Wiki= --> | <!-- Pod2Wiki= --> | ||
− | |||
<!-- Pod2Wiki=head_epoch_time --> | <!-- Pod2Wiki=head_epoch_time --> | ||
===Epoch time=== | ===Epoch time=== | ||
Line 106: | Line 88: | ||
Time in seconds since system epoch. Used in the login tickets table and when performing date calculations. | Time in seconds since system epoch. Used in the login tickets table and when performing date calculations. | ||
− | |||
− | |||
<!-- Edit below this comment --> | <!-- Edit below this comment --> | ||
<!-- Pod2Wiki= --> | <!-- Pod2Wiki= --> | ||
− | |||
<!-- Pod2Wiki=head_methods --> | <!-- Pod2Wiki=head_methods --> | ||
==METHODS== | ==METHODS== | ||
− | |||
− | |||
<!-- Edit below this comment --> | <!-- Edit below this comment --> | ||
<!-- Pod2Wiki= --> | <!-- Pod2Wiki= --> | ||
− | |||
<!-- Pod2Wiki=head_parsing --> | <!-- Pod2Wiki=head_parsing --> | ||
===Parsing=== | ===Parsing=== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
@t = split_value( $value ) | @t = split_value( $value ) | ||
Splits internal or ISO format $value into years, months, days, hours, minutes, seconds. | Splits internal or ISO format $value into years, months, days, hours, minutes, seconds. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
$time = datetime_local( @t ) | $time = datetime_local( @t ) | ||
Returns local time @t as the number of seconds since epoch, where @t is years, months etc. | Returns local time @t as the number of seconds since epoch, where @t is years, months etc. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
$time = datetime_utc( @t ) | $time = datetime_utc( @t ) | ||
Returns UTC time @t as the number of seconds since epoch, where @t is years, months etc. | Returns UTC time @t as the number of seconds since epoch, where @t is years, months etc. | ||
− | |||
− | |||
<!-- Edit below this comment --> | <!-- Edit below this comment --> | ||
<!-- Pod2Wiki= --> | <!-- Pod2Wiki= --> | ||
− | |||
<!-- Pod2Wiki=head_formatting --> | <!-- Pod2Wiki=head_formatting --> | ||
===Formatting=== | ===Formatting=== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
$datetime = EPrints::Time::join_value( @t ) | $datetime = EPrints::Time::join_value( @t ) | ||
Return a time @t in internal format. | Return a time @t in internal format. | ||
Returns undef if no parts are defined. | Returns undef if no parts are defined. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
($year,$mon,$day,$hour,$min,$sec) = EPrints::Time::local_datetime( [ $seconds ] ) | ($year,$mon,$day,$hour,$min,$sec) = EPrints::Time::local_datetime( [ $seconds ] ) | ||
Line 201: | Line 124: | ||
$seconds is seconds since epoch or now if not given. | $seconds is seconds since epoch or now if not given. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
($year,$mon,$day,$hour,$min,$sec) = EPrints::Time::utc_datetime( [ $seconds ] ) | ($year,$mon,$day,$hour,$min,$sec) = EPrints::Time::utc_datetime( [ $seconds ] ) | ||
Line 216: | Line 129: | ||
$seconds is seconds since epoch or now if not given. | $seconds is seconds since epoch or now if not given. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
$date = EPrints::Time::iso_date( [ $seconds ] ) | $date = EPrints::Time::iso_date( [ $seconds ] ) | ||
Line 231: | Line 134: | ||
$seconds is seconds since epoch or now if not given. | $seconds is seconds since epoch or now if not given. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
$datetime = EPrints::Time::iso_datetime( [ $seconds ] ); | $datetime = EPrints::Time::iso_datetime( [ $seconds ] ); | ||
Line 246: | Line 139: | ||
$seconds is seconds since epoch or now if not given. | $seconds is seconds since epoch or now if not given. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
$datetime = EPrints::Time::rfc822_datetime( [ $seconds ] ) | $datetime = EPrints::Time::rfc822_datetime( [ $seconds ] ) | ||
Line 261: | Line 144: | ||
$seconds is seconds since epoch or now if not given. | $seconds is seconds since epoch or now if not given. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
$timestamp = EPrints::Time::human_time( [$time] ) | $timestamp = EPrints::Time::human_time( [$time] ) | ||
Return a string describing the current local date and time in the current locale's format, see {{API:PodLink|file=perlfunc|package_name=perlfunc|section=localtime|text=perlfunc/localtime}}. | Return a string describing the current local date and time in the current locale's format, see {{API:PodLink|file=perlfunc|package_name=perlfunc|section=localtime|text=perlfunc/localtime}}. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
$timestamp = EPrints::Time::human_delay( $hours ); | $timestamp = EPrints::Time::human_delay( $hours ); | ||
Line 290: | Line 153: | ||
$hours the number of hours representing the time you want to be human readable. | $hours the number of hours representing the time you want to be human readable. | ||
− | |||
− | |||
<!-- Edit below this comment --> | <!-- Edit below this comment --> | ||
<!-- Pod2Wiki= --> | <!-- Pod2Wiki= --> | ||
− | |||
<!-- Pod2Wiki=head_phrases --> | <!-- Pod2Wiki=head_phrases --> | ||
===Phrases=== | ===Phrases=== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
$label = EPrints::Time::month_label( $repo, $monthid ) | $label = EPrints::Time::month_label( $repo, $monthid ) | ||
Return a UTF-8 string describing the month, in the current lanugage. | Return a UTF-8 string describing the month, in the current lanugage. | ||
$monthid is an integer from 1 to 12. | $monthid is an integer from 1 to 12. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
$label = EPrints::Time::short_month_label( $repo, $monthid ) | $label = EPrints::Time::short_month_label( $repo, $monthid ) | ||
Line 329: | Line 169: | ||
$monthid is an integer from 1 to 12. | $monthid is an integer from 1 to 12. | ||
− | |||
− | |||
<!-- Edit below this comment --> | <!-- Edit below this comment --> | ||
<!-- Pod2Wiki= --> | <!-- Pod2Wiki= --> | ||
− | |||
<!-- Pod2Wiki=head_rendering --> | <!-- Pod2Wiki=head_rendering --> | ||
===Rendering=== | ===Rendering=== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
$xhtml = EPrints::Time::render_date( $repo, $value ) | $xhtml = EPrints::Time::render_date( $repo, $value ) | ||
Renders a [[API:EPrints/MetaField/Date|EPrints::MetaField::Date]] or [[API:EPrints/MetaField/Time|EPrints::MetaField::Time]] value in a human-friendly form in the current locale's time zone. | Renders a [[API:EPrints/MetaField/Date|EPrints::MetaField::Date]] or [[API:EPrints/MetaField/Time|EPrints::MetaField::Time]] value in a human-friendly form in the current locale's time zone. | ||
Line 355: | Line 182: | ||
E.g. | E.g. | ||
− | + | <pre> 5 June 2010 10:35:12 +02:00 | |
12 December 1912 # no time | 12 December 1912 # no time | ||
− | 1954 # no month/day | + | 1954 # no month/day</pre> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
$xhtml = EPrints::Time::render_short_date( $repo, $value ) | $xhtml = EPrints::Time::render_short_date( $repo, $value ) | ||
Line 374: | Line 191: | ||
E.g. | E.g. | ||
− | + | <pre> 05 Jun 2010 10:35:12 | |
12 Dec 1912 # no time | 12 Dec 1912 # no time | ||
− | 1954 # no month/day | + | 1954 # no month/day</pre> |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<!-- Pod2Wiki=head_copyright --> | <!-- Pod2Wiki=head_copyright --> | ||
==COPYRIGHT== | ==COPYRIGHT== | ||
− | + | : Copyright 2000-2011 University of Southampton. | |
− | + | ||
+ | : This file is part of EPrints http://www.eprints.org/. | ||
+ | |||
+ | : EPrints is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. | ||
+ | |||
+ | : EPrints is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. | ||
+ | |||
+ | : You should have received a copy of the GNU Lesser General Public License along with EPrints. If not, see http://www.gnu.org/licenses/. | ||
+ | |||
<!-- Edit below this comment --> | <!-- Edit below this comment --> | ||
<!-- Pod2Wiki= --> | <!-- Pod2Wiki= --> | ||
− | + | <!-- Pod2Wiki=_postamble_ --> | |
− | <!-- Pod2Wiki=_postamble_ --><!-- Edit below this comment --> | + | <!-- Edit below this comment --> |
Latest revision as of 09:56, 22 January 2013
EPrints 3 Reference: Directory Structure - Metadata Fields - Repository Configuration - XML Config Files - XML Export Format - EPrints data structure - Core API - Data Objects
Latest Source Code (3.4, 3.3) | Revision Log | Before editing this page please read Pod2Wiki
Contents
NAME
EPrints::Time - Time and Date-related functions
SYNOPSIS
($year) = EPrints::Time::utc_datetime()
# 2010
($year,$month) = EPrints::Time::local_datetime()
# 2010, 6
EPrints::Time::iso_datetime();
# 2008-05-15T14:40:24Z
EPrints::Time::iso_date()
# 2010-06-23
EPrints::Time::month_label( $repo, 11 )
# returns "November"
EPrints::Time::short_month_label( $repo, 11 )
# returns "Nov"
EPrints::Time::render_date( $repo, "2001-01-12T00:00:00Z" )
# returns XML containing 12 January 2001 00:00
EPrints::Time::render_short_date( $repo, "2001-01-12T00:00:00Z" )
# returns XML containing 12 Jan 2001 00:00
DESCRIPTION
This package contains functions related to time/date functionality.
FORMATS USED IN EPRINTS
Internal format
Time zone: UTC (database), server local time (embargoes)
Format: YYYY or YYYY-MM or YYYY-MM-DD or "YYYY-MM-DD hh" or "YYYY-MM-DD hh:mm" or "YYYY-MM-DD hh:mm:ss"
These are used in the database and when setting and getting values. They can contain any fractional part of a date time.
ISO 8601-style date/times
Time zone: UTC
Format: YYYY-MM-DD or YYYY-MM-DDThh:mm:ssZ
These are primarily used in XML output where times that conform to the standard XSD date/time are required.
Epoch time
Time zone: UTC
Format: integer
Time in seconds since system epoch. Used in the login tickets table and when performing date calculations.
METHODS
Parsing
@t = split_value( $value )
Splits internal or ISO format $value into years, months, days, hours, minutes, seconds.
$time = datetime_local( @t )
Returns local time @t as the number of seconds since epoch, where @t is years, months etc.
$time = datetime_utc( @t )
Returns UTC time @t as the number of seconds since epoch, where @t is years, months etc.
Formatting
$datetime = EPrints::Time::join_value( @t )
Return a time @t in internal format.
Returns undef if no parts are defined.
($year,$mon,$day,$hour,$min,$sec) = EPrints::Time::local_datetime( [ $seconds ] )
Returns the local date-time as an array, see perlfunc/localtime.
$seconds is seconds since epoch or now if not given.
($year,$mon,$day,$hour,$min,$sec) = EPrints::Time::utc_datetime( [ $seconds ] )
Returns the UTC date-time as an array, see perlfunc/gmtime.
$seconds is seconds since epoch or now if not given.
$date = EPrints::Time::iso_date( [ $seconds ] )
Return a UTC date of the form YYYY-MM-DD.
$seconds is seconds since epoch or now if not given.
$datetime = EPrints::Time::iso_datetime( [ $seconds ] );
Return a UTC date-time of the form YYYY-MM-DDTHH:MM:SSZ
$seconds is seconds since epoch or now if not given.
$datetime = EPrints::Time::rfc822_datetime( [ $seconds ] )
Return the local date-time in RFC 822 format (used by e.g. RSS).
$seconds is seconds since epoch or now if not given.
$timestamp = EPrints::Time::human_time( [$time] )
Return a string describing the current local date and time in the current locale's format, see perlfunc/localtime.
$timestamp = EPrints::Time::human_delay( $hours );
Returns a human readable amount of time.
$hours the number of hours representing the time you want to be human readable.
Phrases
$label = EPrints::Time::month_label( $repo, $monthid )
Return a UTF-8 string describing the month, in the current lanugage.
$monthid is an integer from 1 to 12.
$label = EPrints::Time::short_month_label( $repo, $monthid )
Return a UTF-8 string of a short representation in month, in the current lanugage.
$monthid is an integer from 1 to 12.
Rendering
$xhtml = EPrints::Time::render_date( $repo, $value )
Renders a EPrints::MetaField::Date or EPrints::MetaField::Time value in a human-friendly form in the current locale's time zone.
Month names are taken from the current repository language.
E.g.
5 June 2010 10:35:12 +02:00 12 December 1912 # no time 1954 # no month/day
$xhtml = EPrints::Time::render_short_date( $repo, $value )
Render a shorter form of render_date.
E.g.
05 Jun 2010 10:35:12 12 Dec 1912 # no time 1954 # no month/day
COPYRIGHT
- Copyright 2000-2011 University of Southampton.
- This file is part of EPrints http://www.eprints.org/.
- EPrints is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- EPrints is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser General Public License along with EPrints. If not, see http://www.gnu.org/licenses/.