mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 04:45:45 +00:00
Bug 149246: Allow use of relative time units in query screen.
Patch by Michael Schindler <michael@compressconsult.com>, 2xr=jouni
This commit is contained in:
parent
5640958a00
commit
b799fd6bb0
@ -23,6 +23,7 @@
|
||||
# Stephan Niemz <st.n@gmx.net>
|
||||
# Andreas Franke <afranke@mathweb.org>
|
||||
# Myk Melez <myk@mozilla.org>
|
||||
# Michael Schindler <michael@compressconsult.com>
|
||||
|
||||
################################################################################
|
||||
# Script Initialization
|
||||
@ -158,6 +159,27 @@ if ($::FORM{'cmdtype'} eq 'runnamed') {
|
||||
sub SqlifyDate {
|
||||
my ($str) = @_;
|
||||
$str = "" if !defined $str;
|
||||
if ($str =~ /^-?(\d+)([dDwWmMyY])$/) { # relative date
|
||||
my ($amount, $unit, $date) = ($1, lc $2, time);
|
||||
my ($sec, $min, $hour, $mday, $month, $year, $wday) = localtime($date);
|
||||
if ($unit eq 'w') { # convert weeks to days
|
||||
$amount = 7*$amount + $wday;
|
||||
$unit = 'd';
|
||||
}
|
||||
if ($unit eq 'd') {
|
||||
$date -= $sec + 60*$min + 3600*$hour + 24*3600*$amount;
|
||||
return time2str("%Y-%m-%d %H:%M:%S", $date);
|
||||
}
|
||||
elsif ($unit eq 'y') {
|
||||
return sprintf("%4d-01-01 00:00:00", $year+1900-$amount);
|
||||
}
|
||||
elsif ($unit eq 'm') {
|
||||
$month -= $amount;
|
||||
while ($month<0) { $year--; $month += 12; }
|
||||
return sprintf("%4d-%02d-01 00:00:00", $year+1900, $month+1);
|
||||
}
|
||||
return undef; # should not happen due to regexp at top
|
||||
}
|
||||
my $date = str2time($str);
|
||||
if (!defined($date)) {
|
||||
my $htmlstr = html_quote($str);
|
||||
|
Loading…
Reference in New Issue
Block a user