diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2011-03-08 11:21:49 +0000 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2011-03-08 11:21:49 +0000 |
commit | dc0e217390132f7e76a4d9c0a8a81a9556d19081 (patch) | |
tree | 3ebbdb1eacfa05867db2fed2e84fb0d3eef80254 /virt-top | |
parent | ad0221b4eed02049674ca4584fa4c585f0f3203f (diff) | |
download | virt-top-dc0e217390132f7e76a4d9c0a8a81a9556d19081.tar.gz virt-top-dc0e217390132f7e76a4d9c0a8a81a9556d19081.tar.xz virt-top-dc0e217390132f7e76a4d9c0a8a81a9556d19081.zip |
Fix --end-time option with absolute times.
Assume the user enters a local time, and convert it to UTC.
This also adds some clarifying comments to the relative time
code (but doesn't change that code).
Note that the obsolete Calendar1 code is *not* updated by this change.
Diffstat (limited to 'virt-top')
-rwxr-xr-x | virt-top/virt_top_calendar2.ml | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/virt-top/virt_top_calendar2.ml b/virt-top/virt_top_calendar2.ml index cb0ebec..cc82eec 100755 --- a/virt-top/virt_top_calendar2.ml +++ b/virt-top/virt_top_calendar2.ml @@ -38,18 +38,28 @@ fun time -> Calendar.Period.make 0 0 0 hh mm ss ) else (* +seconds *) Calendar.Period.second (int_of_string period) in - (* Add it as an offset from the current time. *) + (* Add it as an offset from the current time. + * + * Note that the default for the Calendar library is to return + * Calendar.now in the UTC time zone, which is in fact what we + * need below. + *) Calendar.add (Calendar.now ()) period ) else ( - if String.contains time '-' then (* YYYY-MM-DD HH:MM:SS *) - Printer.CalendarPrinter.from_string time - else ( (* HH:MM:SS *) - let time = Printer.TimePrinter.from_string time in - Calendar.create (Date.today ()) time - ) + let cal = + if String.contains time '-' then (* YYYY-MM-DD HH:MM:SS *) + Printer.CalendarPrinter.from_string time + else ( (* HH:MM:SS *) + let time = Printer.TimePrinter.from_string time in + Calendar.create (Date.today ()) time + ) in + (* Assume the user has entered a local time. Convert it to + * UTC time zone which is what we need below. (RHBZ#680344) + *) + Calendar.convert cal Time_Zone.Local Time_Zone.UTC ) in - eprintf "end time: %s\n" (Printer.CalendarPrinter.to_string cal); + eprintf "end time (UTC): %s\n" (Printer.CalendarPrinter.to_string cal); (* Convert to a time_t. Note that we compare this against * Unix.gettimeofday in the main module, so this must be returned as |