diff options
author | mkanat%bugzilla.org <> | 2009-01-09 20:13:32 +0100 |
---|---|---|
committer | mkanat%bugzilla.org <> | 2009-01-09 20:13:32 +0100 |
commit | 97b69fa2f0a0213bfddfc5540fedf2e4da63c8d2 (patch) | |
tree | 7be90ce0cafd01c20600372aabc26c54bbb7affd | |
parent | 4e1a9ffcb681951b2138e0781062d1d559bc8af2 (diff) | |
download | bugzilla-97b69fa2f0a0213bfddfc5540fedf2e4da63c8d2.tar.gz bugzilla-97b69fa2f0a0213bfddfc5540fedf2e4da63c8d2.tar.xz |
Bug 472224: Bugzilla.time function that returns detailed time and timezone information
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=dkl, a=mkanat
-rwxr-xr-x | Bugzilla/WebService/Bugzilla.pm | 102 |
1 files changed, 101 insertions, 1 deletions
diff --git a/Bugzilla/WebService/Bugzilla.pm b/Bugzilla/WebService/Bugzilla.pm index 2f35bbe59..b1ab8f34f 100755 --- a/Bugzilla/WebService/Bugzilla.pm +++ b/Bugzilla/WebService/Bugzilla.pm @@ -57,6 +57,29 @@ sub timezone { return { timezone => $self->type('string', $offset) }; } +sub time { + my ($self) = @_; + my $dbh = Bugzilla->dbh; + + my $db_time = $dbh->selectrow_array('SELECT LOCALTIMESTAMP(0)'); + my $now_utc = DateTime->now(); + + my $tz = Bugzilla->local_timezone; + my $now_local = $now_utc->clone->set_time_zone($tz); + my $tz_offset = $tz->offset_for_datetime($now_local); + + return { + db_time => $self->type('dateTime', $db_time), + web_time => $self->type('dateTime', $now_local), + web_time_utc => $self->type('dateTime', $now_utc), + tz_name => $self->type('string', $tz->name), + tz_offset => $self->type('string', + $tz->offset_as_string($tz_offset)), + tz_short_name => $self->type('string', + $now_local->time_zone_short_name), + }; +} + 1; __END__ @@ -129,7 +152,8 @@ extension =item C<timezone> -B<STABLE> +B<DEPRECATED> This method may be removed in a future version of Bugzilla. +Use L</time> instead. =over @@ -148,4 +172,80 @@ string in (+/-)XXXX (RFC 2822) format. =back + +=item C<time> + +B<UNSTABLE> + +=over + +=item B<Description> + +Gets information about what time the Bugzilla server thinks it is, and +what timezone it's running in. + +=item B<Params> (none) + +=item B<Returns> + +A struct with the following items: + +=over + +=item C<db_time> + +C<dateTime> The current time in Bugzilla's B<local time zone>, according +to the Bugzilla I<database server>. + +Note that Bugzilla assumes that the database and the webserver are running +in the same time zone. However, if the web server and the database server +aren't synchronized for some reason, I<this> is the time that you should +rely on for doing searches and other input to the WebService. + +=item C<web_time> + +C<dateTime> This is the current time in Bugzilla's B<local time zone>, +according to Bugzilla's I<web server>. + +This might be different by a second from C<db_time> since this comes from +a different source. If it's any more different than a second, then there is +likely some problem with this Bugzilla instance. In this case you should +rely on the C<db_time>, not the C<web_time>. + +=item C<web_time_utc> + +The same as C<web_time>, but in the B<UTC> time zone instead of the local +time zone. + +=item C<tz_name> + +C<string> The long name of the time zone that the Bugzilla web server is +in. Will usually look something like: C<America/Los Angeles> + +=item C<tz_short_name> + +C<string> The "short name" of the time zone that the Bugzilla web server +is in. This should only be used for display, and not relied on for your +programs, because different time zones can have the same short name. +(For example, there are two C<EST>s.) + +This will look something like: C<PST>. + +=item C<tz_offset> + +C<string> The timezone offset as a string in (+/-)XXXX (RFC 2822) format. + +=back + +=item B<History> + +=over + +=item Added in Bugzilla B<3.4>. + +=back + +=back + + =back |